概述和准备工作

1、什么是 JdbcTemplate

​ Spring 框架对 JDBC 进行封装,使用 JdbcTemplate 方便实现对数据库操作

2、准备工作

(1)引入相关 jar 包

(2)在 spring 配置文件配置数据库连接池
1、在src目录下创建jdbc.properties
prop.driverClass=com.mysql.jdbc.Driver
prop.url=jdbc:mysql://localhost:3306/user_db
prop.username=root
prop.password=123456

2、bean1.xml

    <!--引入外部属性文件--><context:property-placeholder location="classpath:jdbc.properties"/><!--配置连接池--><bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close"><property name="driverClassName" value="${prop.driverClass}"/><property name="url" value="${prop.url}"/><property name="username" value="${prop.username}"/><property name="password" value="${prop.password}"/></bean>
(3)配置 JdbcTemplate 对象,注入 DataSource

bean1.xml

    <!--JdbcTemplate对象--><bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"><!--注入dataSource--><property name="dataSource" ref="dataSource"/></bean>
(4)创建 service 类,创建 dao 类,在 dao 注入 jdbcTemplate 对象
1、开启组件扫描,bean1.xml完整配置如下
<?xml version="1.0" encoding="UTF-8"?>
<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"xmlns:aop="http://www.springframework.org/schema/aop"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"><!--开启组件扫描--><context:component-scan base-package="com.spring5"/><!--引入外部属性文件--><context:property-placeholder location="classpath:jdbc.properties"/><!--配置连接池--><bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close"><property name="driverClassName" value="${prop.driverClass}"/><property name="url" value="${prop.url}"/><property name="username" value="${prop.username}"/><property name="password" value="${prop.password}"/></bean><!--JdbcTemplate对象--><bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"><!--注入dataSource--><property name="dataSource" ref="dataSource"/></bean>
</beans>
2、编写service层和dao
package com.spring5.service;import com.spring5.dao.BookDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;@Service
public class BookService {// 注入dao@Autowiredprivate BookDao bookDao;
}
package com.spring5.dao;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;@Repository
public class BookDaoImpl implements BookDao {// 注入JdbcTemplate@Autowiredprivate JdbcTemplate jdbcTemplate;
}

JdbcTemplate 操作数据库

添加

1、对应数据库创建实体类
package com.spring5.entity;public class Book {private int bid;private String bname;private String bstatus;public Book() {}public Book(int bid, String bname, String bstatus) {this.bid = bid;this.bname = bname;this.bstatus = bstatus;}public int getBid() {return bid;}public String getBname() {return bname;}public String getBstatus() {return bstatus;}public void setBid(int bid) {this.bid = bid;}public void setBname(String bname) {this.bname = bname;}public void setBstatus(String bstatus) {this.bstatus = bstatus;}
}
2、编写 service 和 dao
(1)在 dao 进行数据库添加操作
(2)调用 JdbcTemplate 对象里面 update 方法实现添加操作

package com.spring5.dao;import com.spring5.entity.Book;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;@Repository
public class BookDaoImpl implements BookDao {// 注入JdbcTemplate@Autowiredprivate JdbcTemplate jdbcTemplate;@Overridepublic int add(Book book) {// 创建sql语句String sql = "insert into book values(?,?,?)";int row = jdbcTemplate.update(sql, book.getBid(), book.getBname(), book.getBstatus());return row;}
}
package com.spring5.service;import com.spring5.dao.BookDao;
import com.spring5.entity.Book;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;@Service
public class BookService {// 注入dao@Autowiredprivate BookDao bookDao;//添加的方法public void addBook(Book book) {int row = bookDao.add(book);System.out.println(row);}
}
3、测试类
package com.spring5.test;import com.spring5.entity.Book;
import com.spring5.service.BookService;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class TestBook {@Testpublic void testJdbcTemplate() {ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");BookService bookService = context.getBean("bookService", BookService.class);bookService.addBook(new Book(101, "大主宰", "完结"));}
}
4、运行结果

5、数据库查看

修改和删除

BookDaoImpl
package com.spring5.dao;import com.spring5.entity.Book;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;@Repository
public class BookDaoImpl implements BookDao {// 注入JdbcTemplate@Autowiredprivate JdbcTemplate jdbcTemplate;@Overridepublic int add(Book book) {// 创建sql语句String sql = "insert into book values(?,?,?)";return jdbcTemplate.update(sql, book.getBid(), book.getBname(), book.getBstatus());}@Overridepublic int update(Book book) {String sql = "update book set bname=?,bstatus=? where bid=?";return jdbcTemplate.update(sql, book.getBname(), book.getBstatus(), book.getBid());}@Overridepublic int delete(int bid) {String sql = "delete from book where bid=?";return jdbcTemplate.update(sql, bid);}}
BookService
package com.spring5.service;import com.spring5.dao.BookDao;
import com.spring5.entity.Book;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;@Service
public class BookService {// 注入dao@Autowiredprivate BookDao bookDao;//添加的方法public void addBook(Book book) {int row = bookDao.add(book);System.out.println(row);}//修改的方法public void updateBook(Book book) {int row = bookDao.update(book);System.out.println(row);}//删除的方法public void deleteBook(int bid) {int row = bookDao.delete(bid);System.out.println(row);}
}
测试

修改

package com.spring5.test;import com.spring5.entity.Book;
import com.spring5.service.BookService;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class TestBook {@Testpublic void testJdbcTemplate() {ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");BookService bookService = context.getBean("bookService", BookService.class);//bookService.addBook(new Book(101, "大主宰", "完结"));bookService.updateBook(new Book(101, "圣墟", "连载"));}
}

删除

package com.spring5.test;import com.spring5.service.BookService;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class TestBook {@Testpublic void testJdbcTemplate() {ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");BookService bookService = context.getBean("bookService", BookService.class);//bookService.addBook(new Book(101, "大主宰", "完结"));//bookService.updateBook(new Book(101, "圣墟", "连载"));bookService.deleteBook(101);}
}

查询

查询返回某个值

第一个参数:sql 语句;第二个参数:返回类型 Class

第一个参数:sql 语句;第二个参数:sql 语句?参数值;第三个参数:返回类型 Class

BookDao接口新增一个int count();方法,在BookDaoImpl中重写该方法:
    @Overridepublic int count() {String sql = "select count(*) from book";return jdbcTemplate.queryForObject(sql, Integer.class);}

若带参数,修改如下;

String[] args = {...};
return jdbcTemplate.queryForObject(sql, args, Integer.class);
BookService新增方法:
    //查询表中记录数public void findCount() {int count = bookDao.count();System.out.println(count);}
手动在数据库添加3条记录

修改测试类:
package com.spring5.test;import com.spring5.service.BookService;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class TestBook {@Testpublic void testJdbcTemplate() {ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");BookService bookService = context.getBean("bookService", BookService.class);//bookService.addBook(new Book(101, "大主宰", "完结"));//bookService.updateBook(new Book(101, "圣墟", "连载"));//bookService.deleteBook(101);bookService.findCount();}
}
运行结果:

查询返回对象

第一个参数:sql 语句

第二个参数:RowMapper 是接口,针对返回不同类型数据,使用这个接口里面实现类完成 数据封装

第三个参数:sql 语句?参数值

BookDao接口新增一个Book findBookById(int bid);方法,在BookDaoImpl中重写该方法:
    @Overridepublic Book findBookById(int bid) {String sql = "select * from book where bid=?";return jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<Book>(Book.class), bid);}
BookService新增方法:
    //查询返回对象public void findBookbyId(int bid) {Book book = bookDao.findBookById(bid);System.out.println(book);}
修改测试类:
package com.spring5.test;import com.spring5.service.BookService;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class TestBook {@Testpublic void testJdbcTemplate() {ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");BookService bookService = context.getBean("bookService", BookService.class);//bookService.addBook(new Book(101, "大主宰", "完结"));//bookService.updateBook(new Book(101, "圣墟", "连载"));//bookService.deleteBook(101);//bookService.findCount();bookService.findBookbyId(101);}
}
运行结果:

查询返回集合

BookDao接口新增一个List<Book> findAll();方法,在BookDaoImpl中重写该方法:
    @Overridepublic List<Book> findAll() {String sql = "select * from book";return jdbcTemplate.query(sql, new BeanPropertyRowMapper<Book>(Book.class));}
BookService新增方法:
    //查询返回集合public void findBookAll() {List<Book> bookList = bookDao.findAll();System.out.println(bookList);}
修改测试类:
package com.spring5.test;import com.spring5.service.BookService;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class TestBook {@Testpublic void testJdbcTemplate() {ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");BookService bookService = context.getBean("bookService", BookService.class);//bookService.addBook(new Book(101, "大主宰", "完结"));//bookService.updateBook(new Book(101, "圣墟", "连载"));//bookService.deleteBook(101);//bookService.findCount();//bookService.findBookbyId(101);bookService.findBookAll();}
}
运行结果:

批量操作

​ 操作表里面多条记录

添加

第一个参数:sql 语句

第二个参数:List 集合,添加多条记录数据

BookDao接口新增一个int[] batchAdd(List<Object[]> list);方法,在BookDaoImpl中重写该方法:
    @Overridepublic int[] batchAdd(List<Object[]> list) {String sql = "insert into book values(?,?,?)";return jdbcTemplate.batchUpdate(sql, list); // 返回影响行数}
BookService新增方法:
    //批量添加public void batchAddBook(List<Object[]> list) {int[] rows = bookDao.batchAdd(list);System.out.println(Arrays.toString(rows));}
修改测试类:
package com.spring5.test;import com.spring5.service.BookService;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;import java.util.ArrayList;
import java.util.List;public class TestBook {@Testpublic void testJdbcTemplate() {ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");BookService bookService = context.getBean("bookService", BookService.class);// 批量添加List<Object[]> list = new ArrayList<>();Object[] o1 = {104, "完美世界", "完结"};Object[] o2 = {105, "冰火魔厨", "完结"};Object[] o3 = {106, "斗罗大陆", "完结"};list.add(o1);list.add(o2);list.add(o3);bookService.batchAddBook(list);}
}
运行结果:

查看数据库:

修改
BookDao接口新增一个int[] batchUpdate(List<Object[]> list);方法,在BookDaoImpl中重写该方法:
    @Overridepublic int[] batchUpdate(List<Object[]> list) {String sql = "update book set bname=?,bstatus=? where bid=?";return jdbcTemplate.batchUpdate(sql, list); // 返回影响行数}
BookService新增方法:
    //批量修改public void batchUpdateBook(List<Object[]> list) {int[] rows = bookDao.batchUpdate(list);System.out.println(Arrays.toString(rows));}
修改测试类:
package com.spring5.test;import com.spring5.service.BookService;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;import java.util.ArrayList;
import java.util.List;public class TestBook {@Testpublic void testJdbcTemplate() {ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");BookService bookService = context.getBean("bookService", BookService.class);// 批量修改List<Object[]> list = new ArrayList<>();Object[] o1 = {"星门", "完结", 104};    // 根据sql语句参数位置来Object[] o2 = {"超凡世界", "完结", 105};Object[] o3 = {"遮天", "完结", 106};list.add(o1);list.add(o2);list.add(o3);bookService.batchUpdateBook(list);}
}
运行结果:

查看数据库:

删除
BookDao接口新增一个int[] batchDelete(List<Object[]> list);方法,在BookDaoImpl中重写该方法:
    @Overridepublic int[] batchDelete(List<Object[]> list) {String sql = "delete from book where bid=?";return jdbcTemplate.batchUpdate(sql, list); // 返回影响行数}
BookService新增方法:
    //批量删除public void batchDeleteBook(List<Object[]> list) {int[] rows = bookDao.batchDelete(list);System.out.println(Arrays.toString(rows));}
修改测试类:
package com.spring5.test;import com.spring5.service.BookService;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;import java.util.ArrayList;
import java.util.List;public class TestBook {@Testpublic void testJdbcTemplate() {ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");BookService bookService = context.getBean("bookService", BookService.class);// 批量删除List<Object[]> list = new ArrayList<>();Object[] o1 = {104};   Object[] o2 = {105};list.add(o1);list.add(o2);bookService.batchDeleteBook(list);}
}
运行结果:

查看数据库:

Spring5--JdbcTemplate相关推荐

  1. spring5 jdbcTemplate

    1.Jdbc Template概述 Spring框架对JDBC进行封装,使用Jdbc Template方便实现对数据库操作 2.案例演示 2.1 准备工作 (1)向lib引入相关jar包(Maven搞 ...

  2. Java之Spring5:JDBCTemplate

    JDBCTemplate 什么是JDBCTemplate 准备工作 添加操作 修改和删除操作 查询操作 返回某个值 返回对象 返回集合 批量添加 批量修改和删除 完整代码 什么是JDBCTemplat ...

  3. Spring5——JdbcTemplate

    一.什么是JdbcTemplate Spring对Jdbc进行封装,可以方便实现对数据库的操作. 二.操作数据库 2.1 添加 利用sevice调用,sevice中通过@Autowired注入dao, ...

  4. java day60【 Spring 中的 JdbcTemplate[会用] 、Spring 中的事务控制 、Spring5 的新特性[了解] 】...

    第1章 Spring 中的 JdbcTemplate[会用] 1.1JdbcTemplate 概述 1.2JdbcTemplate 对象的创建 1.3spring 中配置数据源 1.3.1 环境搭建 ...

  5. Spring5使用JDBCTemplate批处理添加数据时提示SQL语法有错

    目录 问题描述 解决方案 问题描述 今天在使用Spring5框架时,用JDBCTemplate技术来操作数据库,一开始增删改查都好好的,后来使用jdbcTemplate.batchUpdate()进行 ...

  6. 001 spring5框架:java类工程,IOC:实体类表示表关系,AOP,JdbcTemplate模板,事务操作,Spring5 框架新功能:日志,为空注解,函数式风格,juint,Webflux

    1. Spring5 框架(Spring5 Framework)介绍 1.1 概念 1.Spring 是轻量级的开源的 JavaEE 框架 2.Spring 可以解决企业应用开发的复杂性 3.Spri ...

  7. Spring5学习笔记------4、JdbcTemplate

    JdbcTemplate(概念) 1.Spring框架对JDBC进行了封装,使用JdbcTemplate方便实现对数据库的操作 2.JdbcTemplate操作实现 (1)引入jar包 (2)在Spr ...

  8. Spring5框架基础详解(五)(JdbcTemplate概念和准备、jdbcTemplate操作数据库添加功能、修改和删除功能、查询功能)

    文章目录 一.JdbcTemplate是什么和准备工作 1.1.引入相关maven依赖 1.2在spring配置文件配置数据库连接 1.3配置JdbcTemplate对象,注入DateSource 1 ...

  9. Spring5 学习总结—JdbcTemplate,事务管理

    JdbcTemplate(概念和准备)         1.什么是JdbcTemplate                 1.1 Spring框架对JDBC进行封装,使用 JdbcTemplate ...

  10. Spring5框架day03之JdbcTemplate

    一.JdbcTemplate准备工作 1.要使用JdbcTemplate就要先引入所需jar包 2.在xml文件中配置数据库资源,JdbcTemplate模板 <?xml version=&qu ...

最新文章

  1. Linux命令screen—终端切换,工作环境保存,画面同步,防断网
  2. Python从菜鸟到高手(4):导入Python模块
  3. androidstuido_schooltest_6_media_service
  4. linux 命令/目录 名称 英文单词 缩写 助记
  5. 前端学习(2732):重读vue电商网站42之添加富文本编辑器
  6. 赠送300家门店260亿销售额的零售企业Power BI实战示例数据
  7. realvnc 6 教程 linux,CentOS 6下VNC的安装与配置
  8. Python之路【第十五篇】:Web框架
  9. python愿意_我的第一个Python程序!有人愿意复习一下帮助我改进吗?
  10. smarty capture使用
  11. 黑马程序员 python 数据分析 代码_2020年最新版 5.0程序员 黑马python人工智能数据分析机器学习软件测试全栈开发...
  12. IO、NIO和AIO的区别
  13. 笔记-Tukey Method发现outliers(离群点)
  14. 曲苑杂坛--DML操作中如何处理那些未提交的数据
  15. Justinmind教程(3)——管理原型
  16. 每日总结-05-23
  17. Joel Spolsky在耶鲁大学的演讲(下)
  18. 移动硬盘格式化(pc和mac共用)-菜鸟级解决方案[转]
  19. uniApp和微信小程序好看的我的页面(有源码)
  20. 信息网络安全模拟题----软考高项的走过来

热门文章

  1. oracle安装搜狗输入法教程,mac中如何正确地安装搜狗输入法?
  2. ArcGIS Pro 2.7 新特性(部分)
  3. sqlite数据库的加密与解密
  4. java 定义map集合_Java中的Map集合
  5. js 处理-按中文/拼音/简拼检索
  6. Linux用户权限和认证
  7. 华为智慧屏se55怎么样?
  8. Left_Leaning RedBlack Tree
  9. (翻译)加入俱乐部吧
  10. 从制作原理的角度理解——为什么Lofi音乐适合学习和工作的时候听