一、基本介绍
1,什么是 JdbcTemplate
- JdbcTemplate 是 Spring 提供的一套 JDBC 模版框架,利用 AOP 技术来解决直接使用 JDBC 时大量重复代码的问题。
- JdbcTemplate 虽然没有 MyBatis 那么灵活,但是比直接使用 JDBC 要方便很多。
2,安装配置
(1)首先编辑 pom.xml 文件,添加相关依赖:
spring-boot-starter-jdbc:提供对 JDBC 数据库的支持
mysql-connector-java:MySQL 数据库驱动
druid:Druid 是阿里巴巴开发的号称为监控而生的数据库连接池,也是目前最好的数据库连接池。
<!-- spring-jdbc --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <!-- 数据库驱动依赖 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <!-- 数据库连接池 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.9</version> </dependency>
(2)接着在 application.properties 中配置数据库连接信息:
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource spring.datasource.url=jdbc:mysql://localhost:3306/hangge spring.datasource.username=root spring.datasource.password=hangge1234
二、基本用法
1,创建实体类
(1)假设我们数据库表结构如下:
(2)创建对应的 User 实体类
@Setter @Getter @NoArgsConstructor @ToString public class User { private Integer id; private String userName; private String passWord; }
2,创建数据库访问层
接着创建 UserDao,具体内容如下:
(1)由于前面我们已经添加了 spring-jdbc 相关的依赖,JdbcTemplate 会被注册到 Spring 容器中,因此可以直接注入 JdbcTemplate 使用:
- 增删改三种类型的操作主要使用 update 和 batchUpdate 方法来完成。
- query 和 queryForObject 方法中主要用来完成查询功能。
- execute 方法可以用来执行任意的 SQL、call 方法来调用存储过程。
(2)在执行查询操作时,需要有一个 RowMapper 将查询出来的列和实体类中的属性一一对应起来:
- 如果列名和属性名都是相同的,那么可以直接使用 BeanPropertyRowMapper
- 如果列名和属性名不同,就需要开发者自己实现 RowMapper 接口,将列和实体类属性一一对应起来。
@Repository public class UserDao { @Autowired JdbcTemplate jdbcTemplate; // 新增数据 public int addUser(User user) { return jdbcTemplate.update("INSERT INTO users(username, password) VALUE (?, ?)", user.getUserName(), user.getPassWord()); } // 修改数据 public int updateUser(User user) { return jdbcTemplate.update("UPDATE users SET username=?, password=? WHERE id=?", user.getUserName(), user.getPassWord(), user.getId()); } // 删除数据 public int deleteUserById(Integer id) { return jdbcTemplate.update("DELETE FROM users WHERE id=?", id); } // 获取单条数据 public User getUserById(Integer id) { return jdbcTemplate.queryForObject("SELECT * FROM users WHERE id=?", new BeanPropertyRowMapper<>(User.class), id); } // 获取多条数据 public ListgetAllUsers() { return jdbcTemplate.query("SELECT * FROM users", new BeanPropertyRowMapper<>(User.class)); } }
3,创建 Controller
我们在 Controller 中通过调用 UserDao 进行数据的增、删、改、查操作。
@RestController public class HelloController { @Autowired UserDao userDao; @RequestMapping("/test") public void test(){ // 新增数据 User user1 = new User(); user1.setUserName("hangge"); user1.setPassWord("123456"); int i1 = userDao.addUser(user1); System.out.println("插入一条数据>>>" + i1); // 修改数据 User user2 = new User(); user2.setId(1); user2.setPassWord("888888"); int i2 = userDao.updateUser(user2); System.out.println("更新一条数据>>>" + i2); // 删除数据 int i3 = userDao.deleteUserById(12); System.out.println("删除一条数据>>>" + i3); // 查询单条数据 User user4 = userDao.getUserById(1); System.out.println("查询1条数据>>>" + user4.toString()); // 查询多条数据 Listusers = userDao.getAllUsers(); System.out.println("查询多条数据>>>" + users); return; } }
4,运行测试
在浏览器中访问 http://localhost:8080/test 地址,可以看到控制台打印出的日志如下:原文出自:www.hangge.com 转载请保留原文链接:https://www.hangge.com/blog/cache/detail_2529.html