springboot入门_数据库访问_jdbcTemplate

本文记录下在springboot项目中使用jdbcTemplate访问数据库。

创建springboot项目,添加依赖,pom文件如下:

 1 <!--web 依赖-->
 2         <dependency>
 3             <groupId>org.springframework.boot</groupId>
 4             <artifactId>spring-boot-starter-web</artifactId>
 5         </dependency>
 6         <!--spring jdbc依赖-->
 7         <dependency>
 8             <groupId>org.springframework.boot</groupId>
 9             <artifactId>spring-boot-starter-jdbc</artifactId>
10         </dependency>
11         <!--mysql 依赖-->
12         <dependency>
13             <groupId>mysql</groupId>
14             <artifactId>mysql-connector-java</artifactId>
15         </dependency>
16
17         <!-- fastjson -->
18         <dependency>
19             <groupId>com.alibaba</groupId>
20             <artifactId>fastjson</artifactId>
21             <version>1.2.47</version>
22         </dependency>

要访问数据库,我们必须配置数据库连接信息,application.properties中添加数据库链接信息。springboot中默认使用的是Hikari数据库连接池

1 #数据源配置
2 spring.datasource.url=jdbc:mysql://localhost:3306/test
3 spring.datasource.username=root
4 spring.datasource.password=123456
5 #驱动可以不配置,不配置时会从url中解析
6 spring.datasource.driver-class-name=com.mysql.jdbc.Driver

如果我们不想使用Hikari,比如想使用阿里的德鲁伊,我们可以修改

1 spring.datasource.type=com.alibaba.druid.pool.DruidDataSource

数据库创建表:

1 CREATE TABLE `t_city` (
2   `id` BIGINT(11) NOT NULL AUTO_INCREMENT,
3   `cityName` VARCHAR(50) NOT NULL,
4   `cityCode` VARCHAR(50) NOT NULL,
5   PRIMARY KEY (`id`)
6 ) ENGINE=INNODB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8

创建与数据库表对应的实体类:

 1 public class City {
 2     private Long id;
 3     private String cityName;
 4     private String cityCode;
 5
 6     public City(){}
 7
 8     public City(String cityName, String cityCode){
 9         this.cityName = cityName;
10         this.cityCode = cityCode;
11     }
12     //省略get和set方法
13 }

定义dao层接口及实现

 1 public interface CityDAO {
 2
 3     int add(City city) throws Exception;
 4
 5     int delete(Long id) throws Exception;
 6
 7     int update(City city) throws Exception;
 8
 9     List<City> findAllCity() throws Exception;
10
11     City findById(Long id) throws Exception;
12
13 }
 1 @Service("cityDAO")
 2 public class CityDAOImpl implements CityDAO {
 3
 4     @Autowired
 5     private JdbcTemplate jdbcTemplate;
 6
 7     @Override
 8     public int add(City city) {
 9         String sql = "insert into t_city (cityCode, cityName) values (?, ?)";
10         return jdbcTemplate.update(sql, city.getCityCode(), city.getCityName());
11     }
12
13     @Override
14     public int delete(Long id) {
15         String sql = "delete from t_city where id = ?";
16         return jdbcTemplate.update(sql, id);
17     }
18
19     @Override
20     public int update(City city) {
21         String sql = "update t_city set cityCode = ?, cityName = ? where id = ?";
22         return jdbcTemplate.update(sql, city.getCityCode(), city.getCityName(), city.getId());
23     }
24
25     @Override
26     public List<City> findAllCity() {
27         String sql = "select * from t_city";
28         return jdbcTemplate.query(sql, new Object[]{}, new BeanPropertyRowMapper(City.class));
29     }
30
31     @Override
32     public City findById(Long id) {
33         String sql = "select * from t_city where id = ?";
34         List<City> cityList = jdbcTemplate.query(sql, new Object[]{id}, new BeanPropertyRowMapper(City.class));
35         if(cityList != null && cityList.size()>0){
36             return cityList.get(0);
37         }
38         return null;
39     }
40 }

定义service层接口及实现

 1 public interface CityService {
 2
 3     int add(City city) throws Exception;
 4
 5     int delete(Long id) throws Exception;
 6
 7     int update(City city) throws Exception;
 8
 9     List<City> findAllCity() throws Exception;
10
11     City findById(Long id) throws Exception;
12
13 }
 1 @Service("cityService")
 2 public class CityServiceImpl implements CityService {
 3
 4     @Autowired
 5     private CityDAO cityDAO;
 6
 7     @Override
 8     public int add(City city) throws Exception {
 9         return cityDAO.add(city);
10     }
11
12     @Override
13     public int delete(Long id) throws Exception {
14         return cityDAO.delete(id);
15     }
16
17     @Override
18     public int update(City city) throws Exception {
19         return cityDAO.update(city);
20     }
21
22     @Override
23     public List<City> findAllCity() throws Exception {
24         return cityDAO.findAllCity();
25     }
26
27     @Override
28     public City findById(Long id) throws Exception {
29         return cityDAO.findById(id);
30     }
31 }

此处service和dao之间的代码看似可以省略一层,但是一般我们在dao层只做与数据库的交互,在service层处理相应的业务逻辑,所以还是需要做分层的。

为了看出代码执行效果,定义几个简单的restful api做测试。

controller代码如下

 1 @RestController
 2 @RequestMapping("/datas/city/jdbc")
 3 public class CityController {
 4
 5     @Autowired
 6     private CityService cityService;
 7
 8     @PutMapping
 9     public String add(@RequestBody JSONObject jsonObject){
10         String cityCode = jsonObject.getString("cityCode");
11         String cityName = jsonObject.getString("cityName");
12         City city = new City(cityName, cityCode);
13         try {
14             cityService.add(city);
15             return "success";
16         } catch (Exception e) {
17             e.printStackTrace();
18             return "fail";
19         }
20     }
21
22     @DeleteMapping("/{id}")
23     public String delete(@PathVariable Long id){
24         try {
25             cityService.delete(id);
26             return "success";
27         } catch (Exception e) {
28             e.printStackTrace();
29             return "fail";
30         }
31     }
32
33     @PostMapping
34     public String update(@RequestBody JSONObject jsonObject){
35         Long id = jsonObject.getLong("id");
36         try {
37             City city = cityService.findById(id);
38             if(city != null){
39                 String cityCode = jsonObject.getString("cityCode");
40                 city.setCityCode(cityCode);
41                 String cityName = jsonObject.getString("cityName");
42                 city.setCityName(cityName);
43                 cityService.update(city);
44                 return "success";
45             }
46         } catch (Exception e) {
47             e.printStackTrace();
48         }
49         return "fail";
50     }
51
52     @GetMapping("/list")
53     public String list(){
54         try {
55             List<City> cityList =  cityService.findAllCity();
56             return cityList.toString();
57         } catch (Exception e) {
58             e.printStackTrace();
59         }
60         return null;
61     }
62 }

如果我们不想使用springboot提供的默认配置信息,想要自己配置数据源信息也是可以的。自己配置就不需要在application.properties文件中配置datasource相关的信息了,我们可以创建自己的配置文件,在配置勒种读取并设置即可,

创建dbSource.properties

1 #datasource config
2 jdbc.driverClassName=com.mysql.jdbc.Driver
3 jdbc.url=jdbc:mysql://localhost:3306/test
4 jdbc.username=root
5 jdbc.password=123456

创建配置类

 1 @Configuration
 2 @PropertySource("classpath:dbSource.properties")
 3 public class DataSourceConfig {
 4
 5     @Autowired
 6     private Environment env;
 7
 8     @Bean
 9     public JdbcTemplate jdbcTemplate(){
10         JdbcTemplate jdbcTemplate = new JdbcTemplate();
11         jdbcTemplate.setDataSource(dataSource());
12         return jdbcTemplate;
13     }
14
15     @Bean
16     public DataSource dataSource(){
17         System.out.println("初始化数据源start。。。");
18         //HikariDataSource dataSource = new HikariDataSource();
19         DruidDataSource dataSource = new DruidDataSource();
20         String driver = env.getProperty("jdbc.driverClassName").trim();
21         String url = env.getProperty("jdbc.url").trim();
22         String username = env.getProperty("jdbc.username").trim();
23         String password = env.getProperty("jdbc.password").trim();
24         dataSource.setDriverClassName(driver);
25         //dataSource.setJdbcUrl(url);//Hikar url
26         dataSource.setUrl(url);
27         dataSource.setUsername(username);
28         dataSource.setPassword(password);
29         System.out.println("初始化数据源end。。。");
30         return dataSource;
31     }
32
33 }

启动项目可以看到其中日志中如下

原文地址:https://www.cnblogs.com/wlzq/p/9669651.html

时间: 2024-08-30 02:34:11

springboot入门_数据库访问_jdbcTemplate的相关文章

springboot入门_数据库访问_jpa

本文记录使用jpa访问数据库. 创建spring boot项目,并在pom文件中添加相应的依赖包. 1 <dependency> 2 <groupId>org.springframework.boot</groupId> 3 <artifactId>spring-boot-starter-data-jpa</artifactId> 4 </dependency> 5 <dependency> 6 <groupId&g

SpringBoot入门 (五) 数据库访问之spring data jpa

本文记录学习使用spring data jpa访问数据库 一 什么是Spring Data JPA JPA(Java Persistence API)是Sun官方提出的Java持久化规范.它为Java开发人员提供了一种对象.关联映射工具来管理Java应用中的关系数据.主要是为了简化现有的持久化开发工作和整合ORM技术,对不同的ORM框架提供统一的规范标准. Spring Data JPA 是Spring基于Hibernate框架和JPA(Java Persistence API)规范的基础上封装

培训教程_数据库访问

oracle数据库访问 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Configuration; using System.Data.OracleClient; using System.Data; /// <summary> ///sqlHelper 的摘要说明 /// </summary> public class Oracle

SpringBoot入门 (七) Redis访问操作

本文记录学习在SpringBoot中使用Redis. 一 什么是Redis Redis 是一个速度非常快的非关系数据库(Non-Relational Database),它可以存储键(Key)与 多种不同类型的值(Value)之间的映射(Mapping),可以将存储在内存的键值对数据持久化到硬盘,可以使用复制特性来扩展读性能,还可以使用客户端分片来扩展写性能.Redis主要有以下几个优点: 1 性能极高,它每秒可执行约 100,000 个 Set 以及约 100,000 个 Get 操作: 2 

springboot入门_模板

springboot中已经不推荐使用jsp,而是推荐使用模板,如freemarker,thymeleaf等,本文记录在sprigboot中使用模板. 创建一个maven的springboot工程, freemarker,要使用freemarker模板需引入所需要的jar,pom.xml如下: 1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XML

springboot入门_获取属性文件中的值

在上一篇文章中,记录了用springboot实现输出一个hello world到前台的程序,本文记录学习springboot读取属性文件中配置信息. 框架属性文件(application.properties) 创建一个springboot项目,并引入相关依赖,POM文件如下: 1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns="http://maven.apache.or

SpringBoot入门基础

SpringBoot入门 (一) HelloWorld 一 什么是springboot springboot是一个全新的框架,它设计的目的简化spring项目的初始环境的搭建和开发,主要有以下几个特点: 1.简化初始配置 ,可与主流框架集成: 2.内置Servlet容器,无需在打War包: 3.使用了Starter(启动器)管理依赖并版本控制: 4.大量的自动配置,简化开发,方便集成第三方: 5.提供准生产环境运行时的监控,如指标,健康,外部配置等: 6.无需XML配置,减少冗余代码 . 未使用

SpringBoot数据库访问工具(JdbcTemplate、MyBatis、JPA、Hibernate)

SpringBoot数据库访问 关系型数据库访问(RDBMS) 采用JdbcTemplate.MyBatis.JPA.Hibernate等技术. 一.JdbcTemplate工具 1.在pom.xml添加boot-starter-jdbc定义<dependencies> 数据库驱动 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifac

SpringBoot数据库访问(一)--------关系型数据库访问(RDBMS)

关系型数据库访问(RDBMS) 采用JdbcTemplate.MyBatis.JPA.Hibernate等技术. 一.JdbcTemplate工具 在pom.xml添加boot-starter-jdbc定义 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1