开始前的准备工作
本次介绍jdbcTemplate是在springboot2.x版本总使用的,因为springboot自动已经把jdbcTemplate自动注册到容器中,我们可以直接使用。
创建springboot项目,然后再pom.xml中导入数据库连接依赖:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.27</version>
</dependency>
然后配置数据库连接信息,在application.yaml配置文件中:(注意换成自己的数据库和用户,密码)
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/springboot-test-db?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false
username: root
password: root
接下来就是创建数据库和创建用户Bean。(自己创建不介绍了)
JdbcTemplate简介
JdbcTemplate是Spring对JDBC的封装,目的是使JDBC更加易于使用。Spring对数据库的操作在jdbc上面做了深层次的封装,使用spring的注入功能,可以把DataSource注册到JdbcTemplate.之中。
JDBCTemplate的增删改查
update() – 执行DML语句(可以执行增删改操作)
queryForMap() – 查询结果,将结果封装为map集合
queryForList() – 查询结果,将结果封装为List集合
queryForObject() – 查询结果,将结果封装为对象,一般用于查询聚合函数
query() – 查询结果,将结果封装为JavaBean对象。第二个参数为RowMapper,一般使用BeanPropertyRowMapper实现类,可以完成数据到JavaBean的自动封装,演示在下方text6和text7中
@Autowired
JdbcTemplate jdbcTemplate;
// JDBCTemplate添加数据
public static void test01() throws Exception {
String sql = "INSERT INTO tbl_user(name,age,email) VALUES (?, ?, ?);";
int update = jdbcTemplate.update(sql, "张三", "23", "zhangsan@qq.com");
}
// JDBCTemplate修改数据
public static void test02() throws Exception {
String sql = "UPDATE tbl_user SET name=?, age=? WHERE email=?;";
int i = jdbcTemplate.update(sql, "张三", "23", "zhangsan@qq.com");
System.out.println("影响的行数: " + i);
}
// JDBCTemplate删除数据
public static void test03() throws Exception {
String sql = "DELETE FROM tbl_user WHERE id=?;";
int i = jdbcTemplate.update(sql, 7);
System.out.println("影响的行数: " + i);
}
查询单个(如查询指定性别的用户数量)
public T queryForObject(String sql, Object[] args, Class requiredType)
参数分别是sql,sql参数数组,返回数据类型(这里我们就返回Integer)
/**
* 查询单个用户信息
* @return
*/
@GetMapping("/user/{id}")
public User userById(@PathVariable("id") Long id){
String sql = "select * from tbl_user where id = ?";
User query = jdbcTemplate.queryForObject(sql,new Object[]{id},new BeanPropertyRowMapper<>(User.class));
return query;
}
查询列表(查询所有用户列表,含分页)
public List query(String sql, @Nullable Object[] args, RowMapper rowMapper)
参数分别是sql,sql参数数组(可为空),对象映射关系
/**
* 查询全部用户信息
* @return
*/
@GetMapping("/userlist")
public List<User> userList(){
String sql = "select * from tbl_user ";
List<User> userList = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(User.class));
return userList;
}