
在 spring 配置文件 配置数据库连接池,配置 JdbcTemplate 对象,注入 DataSource
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:context="http://www.springframework.org/schema/context"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context.xsd">
-
-
- <context:component-scan base-package="com.chenyixin.spring5.demo_9_jdbcTemplate"/>
-
- <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
- destroy-method="close">
- <property name="url" value="jdbc:mysql:///book_db"/>
- <property name="username" value="root"/>
- <property name="password" value="root"/>
- <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
- bean>
-
- <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
-
- <property name="dataSource" ref="dataSource"/>
- bean>
- beans>
- CREATE TABLE t_book(
- id INT,
- name VARCHAR(25),
- status VARCHAR(25)
- );
- public class Book {
- private Integer id;
- private String name;
- private String status;
-
- public Book() {
- }
-
- public Book(Integer id, String name, String status) {
- this.id = id;
- this.name = name;
- this.status = status;
- }
-
- public Integer getId() {
- return id;
- }
-
- public void setId(Integer id) {
- this.id = id;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getStatus() {
- return status;
- }
-
- public void setStatus(String status) {
- this.status = status;
- }
-
- @Override
- public String toString() {
- return "Book{" +
- "id=" + id +
- ", name='" + name + '\'' +
- ", status='" + status + '\'' +
- '}';
- }
- }
- @Repository
- public class BookDaoImpl implements BookDao {
- //注入 JdbcTemplate
- @Autowired
- private JdbcTemplate jdbcTemplate;
- }
- @Service
- public class BookService {
- // 注入dao
- @Autowired
- private BookDao bookDao;
- }
- @Service
- public class BookService {
- // 注入dao
- @Autowired
- private BookDao bookDao;
-
- public void addBook(Book book) {
- bookDao.add(book);
- }
- }
- @Repository
- public class BookDaoImpl implements BookDao {
- //注入 JdbcTemplate
- @Autowired
- private JdbcTemplate jdbcTemplate;
-
- @Override
- public int add(Book book) {
- String sql = "insert into t_book values(?,?,?)";
- return jdbcTemplate.update(sql,book.getId(),book.getName(),book.getStatus());
- }
- }
- public class BookServiceTest {
-
- @Test
- public void add() {
- ApplicationContext context = new ClassPathXmlApplicationContext("demo9_jdbcTemplate.xml");
- BookService bookService = context.getBean("bookService", BookService.class);
- bookService.addBook(new Book(1,"java","aaa"));
- }
- }
结果:

-
- @Repository
- public class BookDaoImpl implements BookDao {
- @Autowired //注入 JdbcTemplate
- private JdbcTemplate jdbcTemplate;
-
-
- @Override // 添加的方法
- public int add(Book book) {
- String sql = "insert into t_book values(?,?,?)";
- return jdbcTemplate.update(sql,book.getId(),book.getName(),book.getStatus());
- }
-
- @Override // 修改的方法
- public int update(Book book) {
- String sql = "update t_book set name = ?, status = ? where id = ?";
- return jdbcTemplate.update(sql,book.getName(),book.getStatus(),book.getId());
- }
-
- @Override // 删除的方法
- public int delete(Integer id) {
- String sql = "delete from t_book where id = ?";
- return jdbcTemplate.update(sql,id);
- }
- }
BookDao代码:
- public interface BookDao {
-
- // 添加的方法
- int add(Book book);
-
- // 修改的方法
- int update(Book book);
-
- // 删除的方法
- int delete(Integer id);
- }
BookSerivce代码:
- @Service
- public class BookService {
- // 注入dao
- @Autowired
- private BookDao bookDao;
-
- // 添加的方法
- public void addBook(Book book) {
- bookDao.add(book);
- }
-
- // 修改的方法
- public void updateBook(Book book) {
- bookDao.update(book);
- }
-
- // 删除的方法
- public void deleteBook(Integer id) {
- bookDao.delete(id);
- }
- }
updateBook方法测试:
- @Test
- public void updateBook() {
- ApplicationContext context =
- new ClassPathXmlApplicationContext("demo9_jdbcTemplate.xml");
-
- BookService bookService = context.getBean("bookService", BookService.class);
- bookService.updateBook(new Book(1,"Java从入门到放弃","bbb"));
- }
结果:

deleteBook方法测试:
- @Test
- public void deleteBook() {
- ApplicationContext context =
- new ClassPathXmlApplicationContext("demo9_jdbcTemplate.xml");
-
- BookService bookService = context.getBean("bookService", BookService.class);
- bookService.deleteBook(1);
- }
结果:

![]()
有两个参数
⚫ 第一个参数:sql 语句
- // 查询总记录数
- public Integer findCount() {
- return bookDao.selectCount();
- }
BookDao代码:
- // 查询总记录数
- Integer selectCount();
BookDaoImpl代码:
- @Override // 查询总记录数
- public Integer selectCount() {
- String sql = "select count(*) from t_book";
- return jdbcTemplate.queryForObject(sql,Integer.class);
- }
测试代码:
- @Test
- public void findCount() {
- ApplicationContext context =
- new ClassPathXmlApplicationContext("demo9_jdbcTemplate.xml");
- BookService bookService = context.getBean("bookService", BookService.class);
-
- bookService.addBook(new Book(2,"java","java"));
- bookService.addBook(new Book(3,"python","python"));
-
- Integer count = bookService.findCount();
- System.out.println(count); //2
- }
![]()
有三个参数
⚫ 第一个参数:sql 语句⚫ 第二个参数:RowMapper 是接口,针对返回不同类型数据,使用这个接口里面实现类(BeanPropertyRowMapper)完成 数据封装,泛型中填写返回类型,在实现类构造器中填
写返回类型的Class
⚫ 第三个参数:sql 语句值的参数列表
- // 根据id查询图书
- public Book findBookById(Integer id) {
- return bookDao.selectBookById(id);
- }
BookDao代码:
- // 根据id查询图书
- Book selectBookById(Integer id);
BookDaoImpl代码:
- @Override // 根据id查询图书
- public Book selectBookById(Integer id) {
- String sql = "select * from t_book where id = ?";
- return jdbcTemplate.queryForObject(sql,new BeanPropertyRowMapper
(Book.class),id); - }
测试代码:
- @Test
- public void findBookById() {
- ApplicationContext context =
- new ClassPathXmlApplicationContext("demo9_jdbcTemplate.xml");
- BookService bookService = context.getBean("bookService", BookService.class);
-
- Book book = bookService.findBookById(2);
- Book book2 = bookService.findBookById(3);
- System.out.println(book); //Book{id=2, name='java', status='java'}
- System.out.println(book2); //Book{id=3, name='python', status='python'}
- }
用法同上
- @Override // 查询全部图书
- public List
selectAllBook() { - String sql = "select * from t_book";
- return jdbcTemplate.query(sql, new BeanPropertyRowMapper
(Book.class)); - }
测试代码:
- @Test
- public void findAllBook() {
- ApplicationContext context =
- new ClassPathXmlApplicationContext("demo9_jdbcTemplate.xml");
- BookService bookService = context.getBean("bookService", BookService.class);
- List
allBook = bookService.findAllBook(); - for (Book book : allBook) {
- System.out.println(book);
- }
- }
结果:

有两个参数
代码示例:
- @Override // 批量添加
- public int[] batchAddBook(List
- String sql = "insert into t_book values(?,?,?)";
- return jdbcTemplate.batchUpdate(sql, batchArgs);
-
- }
-
- @Override // 批量修改
- public int[] batchUpdateBook(List
- String sql = "update t_book set name = ?, status = ? where id = ?";
- return jdbcTemplate.batchUpdate(sql, batchArgs);
- }
-
- @Override // 批量删除
- public int[] batchDeleteBook(List
- String sql = "delete from t_book where id = ?";
- return jdbcTemplate.batchUpdate(sql, batchArgs);
- }
测试:
1. batchAddBook方法:
- @Test
- public void batchAdd() {
- ApplicationContext context =
- new ClassPathXmlApplicationContext("demo9_jdbcTemplate.xml");
- BookService bookService = context.getBean("bookService", BookService.class);
-
- List
- list.add(new Object[]{4, "c", "111"});
- list.add(new Object[]{5, "c++", "222"});
- list.add(new Object[]{6, "c#", "333"});
-
- bookService.batchAdd(list);
- }
结果:

2. batchUpdate方法:
- @Test
- public void batchUpdate() {
- ApplicationContext context =
- new ClassPathXmlApplicationContext("demo9_jdbcTemplate.xml");
- BookService bookService = context.getBean("bookService", BookService.class);
-
- List
- list.add(new Object[]{ "c语言", "111c",4});
- list.add(new Object[]{ "c++语言", "222c++",5});
- list.add(new Object[]{ "c#语言", "333c#",6});
-
- bookService.batchUpdate(list);
- }
结果:

3. batchDelete方法:
- @Test
- public void batchDelete() {
- ApplicationContext context =
- new ClassPathXmlApplicationContext("demo9_jdbcTemplate.xml");
- BookService bookService = context.getBean("bookService", BookService.class);
-
- List
- list.add(new Object[]{2});
- list.add(new Object[]{4});
- list.add(new Object[]{5});
-
- bookService.batchDelete(list);
- }
结果: