一、基本介绍
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是阿里巴巴开发的号称为监控而生的数据库连接池,也是目前最好的数据库连接池。
org.springframework.boot
spring-boot-starter-jdbc
mysql
mysql-connector-java
com.alibaba
druid
1.1.9
(2)接着在 application.properties 中配置数据库连接信息:
spring.datasource.type=com.alibaba.druid.pool.DruidDataSourcespring.datasource.url=jdbc:mysql://localhost:3306/hangge?serverTimezone=Asia/Shanghaispring.datasource.username=rootspring.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 List getAllUsers() {
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());
// 查询多条数据
List users = userDao.getAllUsers();
System.out.println("查询多条数据>>>" + users);
return;
}
}
4,运行测试
在浏览器中访问 http://localhost:8080/test 地址,可以看到控制台打印出的日志如下: