JdbcTemplate 是Spring 提供的一套JDBC 的模板,利用 AOP技术来解决直接使用JDBC时大量重复代码的问题,JdbcTempalte虽然没有mybatis 那么灵活,但是比直接使用JDBC 要方便很多,Spring boot 对jdbcTemplate 的使用提供了自动化配置类,JdbcTemplateAutoConfiguration。
pom文件
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-jdbc -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
<version>2.0.4.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.13</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.10</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
数据源配置
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.url=jdbc:mysql:///chapter05?serverTimezone=GMT%2B8
spring.datasource.username= root
spring.datasource.password= root
其他的层不进行展示,下面看Dao 层的配置
@Repository
public class BookDao {
@Autowired
JdbcTemplate jdbcTemplate;
public int addBook(book book ){
return jdbcTemplate.update("insert into book (name ,author) values (?,?)",book.getName(),book.getAuthor());
}
public int updateBook(book book) {
return jdbcTemplate.update("update book set name =?,author=? where id=?",book.getName(),book.getAuthor(),book.getId());
}
public int deleteBookById(Integer id){
return jdbcTemplate.update("delete from book where id =?",id);
}
public book getBookById(Integer id){
return jdbcTemplate.queryForObject("select * from book where id=?",new BeanPropertyRowMapper<>(book.class),id);
}
public List<book> getAllBooks(){
return jdbcTemplate.query("select * from book",new BeanPropertyRowMapper<>(book.class));
}
}
创建Dao 的时候,注入JdbcTemplate ,由于已经添加了Spring-jdbc 相关的依赖,JdbcTemplate 会被自动的注册到Spring 容器中,所以可以直接使用JdbcTemplate
在JdbcTemplate 增删改,三种类型的操作,需要有update 和batchUpdate 方法来完成,query和queryForObject 方法来完成查询功能,另外还有 excute 可以用来执行任意的sql 。call 方法来调用存储过程等
在使用的时候,如果实体类跟对象中的属性可以一一对应起来,则直接使用 BeanPropertyRowMapper 即可,如果不一致,需要开发者自己实现RowMapper 接口,完成对应