spring之JdbcTemplate(快速上手实操)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: Spring框架对JDBC进行封装,使用JdbcTemplate方便实现对数据库操作

JdbcTemplate(概念和准备)



1、什么是JdbcTemplate

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


2、准备工作

(1)引入相关jar包


8eae9d20da69424a9b5684ef4193ec13.png


(2)在spring配置文件配置数据库连接池


 <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" 
 destroy-method="close">
        <property name="url" value="jdbc:mysql:///book_db?                    
                                useUnicode=true&amp;serverTimezone=UTC"/>
        <property name="username" value="root" />
        <property name="password" value="root" />
        <property name="driverClassName" value="com.mysql.cj.jdbc.Driver" />
    </bean>



(3)配置JdbcTemplate对象,注入DataSource


<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
  <!--注入dataSource--> 
 <property name="dataSource" ref="dataSource">
</property>
 </bean> 


(4)创建service类,创建dao类,在dao注入jdbcTemplate对象 * 配置文件


* 配置文件 <!-- 组件扫描 -->
 <context:component-scan base-package="com.atguigu">
</context:component-scan> 


@Service
 public class BookService { 
 //注入dao  
@Autowired 
 private BookDao bookDao;
 } 


Dao
 @Repository 
public class BookDaoImpl implements BookDao 
{  //注入JdbcTemplate
  @Autowired 
 private JdbcTemplate jdbcTemplate; } 


JdbcTemplate操作数据库(添加)



1、对应数据库创建实体类


e04b9e64afdf494688133dce87424ada.png



2、编写service和dao


(1)在dao进行数据库添加操作

(2)调用JdbcTemplate对象里面update方法实现添加操作


3e0d9938b6cf43e1aeebc9cb854c1fd4.png


两个参数


第一个参数:sql语句

第二个参数:可变参数,设置sql语句值


@Repository 
public class BookDaoImpl implements BookDao
 {  //注入JdbcTemplate
  @Autowired 
 private JdbcTemplate jdbcTemplate; 
 //添加的方法  
@Override  
public void add(Book book)
 {  //1 创建sql语句 
 String sql = "insert into t_book values(?,?,?)";
  //2 调用方法实现 
 Object[] args = {book.getUserId(), book.getUsername(), book.getUstatus()}; 
 int update = jdbcTemplate.update(sql,args);    
System.out.println(update);  
} } 


3、测试类  


@Test 
public void testJdbcTemplate() { 
 ApplicationContext context =  new ClassPathXmlApplicationContext("bean1.xml");  BookService bookService = context.getBean("bookService", BookService.class); 
 Book book = new Book();  
book.setUserId("1"); 
 book.setUsername("java"); 
 book.setUstatus("a"); 
 bookService.addBook(book);
 } 


JdbcTemplate操作数据库(修改和删除)



1、修改


@Override 
public void updateBook(Book book)
 {  
String sql = "update t_book set username=?,ustatus=? where user_id=?"; 
 Object[] args = {book.getUsername(), book.getUstatus(),book.getUserId()};  
int update = jdbcTemplate.update(sql, args); 
 System.out.println(update); 
} 


2、删除


@Override 
public void delete(String id) { 
 String sql = "delete from t_book where user_id=?";  
int update = jdbcTemplate.update(sql, id); 
 System.out.println(update); 
} 


JdbcTemplate操作数据库(查询返回某个值)



1、场景:查询图书详情

2、JdbcTemplate实现查询返回对象


7e780b663d2a412aa69978dfd0658791.png


有三个参数


第一个参数:sql语句

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

第三个参数:sql语句值


//查询返回对象 
@Override public Book findBookInfo(String id) {  
String sql = "select * from t_book where user_id=?"; 
 //调用方法  
Book book = jdbcTemplate.queryForObject(sql,
             new BeanPropertyRowMapper<Book>(Book.class), id); 
 return book; }


有三个参数


第一个参数:sql语句

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

第三个参数:sql语句值  


//查询返回集合
 @Override public List<Book> findAllBook()
 {  
String sql = "select * from t_book";  
//调用方法  
List<Book> bookList = jdbcTemplate.query(sql, 
                    new BeanPropertyRowMapper<Book>(Book.class)); 
return bookList; }


JdbcTemplate操作数据库(批量操作)



1、批量操作:操作表里面多条记录

2、JdbcTemplate实现批量添加操作


84f49b4b08c24a2c9da09faa350d8bef.png


有两个参数


第一个参数:sql语句

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


//批量添加 
@Override
 public void batchAddBook(List<Object[]> batchArgs)
 {  String sql = "insert into t_book values(?,?,?)";
  int[] ints = jdbcTemplate.batchUpdate(sql, batchArgs);  System.out.println(Arrays.toString(ints)); 
} 
//批量添加测试 
List<Object[]> batchArgs = 
new ArrayList<>(); 
Object[] o1 = {"3","java","a"};
 Object[] o2 = {"4","c++","b"};
 Object[] o3 = {"5","MySQL","c"};
 batchArgs.add(o1);
 batchArgs.add(o2);
 batchArgs.add(o3); 
//调用批量添加
 bookService.batchAdd(batchArgs); 


3、JdbcTemplate实现批量修改操作


//批量修改 
@Override public void batchUpdateBook(List<Object[]> batchArgs) {  
String sql = "update t_book set username=?,ustatus=? where user_id=?";  
int[] ints = jdbcTemplate.batchUpdate(sql, batchArgs);  System.out.println(Arrays.toString(ints)); } 
//批量修改
 List<Object[]> batchArgs = new ArrayList<>(); 
Object[] o1 = {"java0909","a3","3"}; 
Object[] o2 = {"c++1010","b4","4"};
Object[] o3 = {"MySQL1111","c5","5"};
 batchArgs.add(o1); 
batchArgs.add(o2); 
batchArgs.add(o3); 
//调用方法实现批量修改 
bookService.batchUpdate(batchArgs); 


4、JdbcTemplate实现批量删除操作  


//批量删除 
@Override
 public void batchDeleteBook(List<Object[]> batchArgs)
 {  String sql = "delete from t_book where user_id=?";  
int[] ints = jdbcTemplate.batchUpdate(sql, batchArgs);  System.out.println(Arrays.toString(ints)); }
 //批量删除 
List<Object[]> batchArgs = new ArrayList<>();   
Object[] o1 = {"3"};
 Object[] o2 = {"4"}; 
batchArgs.add(o1);
 batchArgs.add(o2); 
//调用方法实现批量删除 
bookService.batchDelete(batchArgs); 


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
Java Spring
使用JDBCTemplate实现与Spring结合,方法公用 ——测试(EmpDaoImplTest)
使用JDBCTemplate实现与Spring结合,方法公用 ——测试(EmpDaoImplTest)
|
XML Java 数据库
【Spring】通过JdbcTemplate实现CRUD操作
【Spring】通过JdbcTemplate实现CRUD操作
147 0
|
3月前
|
JavaScript 前端开发 Java
垃圾分类管理系统基于 Spring Boot Vue 3 微服务架构实操指南
本文介绍了基于Java技术的垃圾分类管理系统开发方案与实施案例。系统采用前后端分离架构,后端使用Spring Boot框架搭配MySQL数据库,前端可选择Vue.js或Java Swing实现。核心功能模块包括垃圾分类查询、科普教育、回收预约等。文中提供了两个典型应用案例:彭湖花园小区使用的Swing桌面系统和基于Spring Boot+Vue的城市管理系统,分别满足不同场景需求。最新技术方案升级为微服务架构,整合Spring Cloud、Redis、Elasticsearch等技术,并采用Docker容器
187 0
|
2月前
|
Java 数据库连接 API
Java 8 + 特性及 Spring Boot 与 Hibernate 等最新技术的实操内容详解
本内容涵盖Java 8+核心语法、Spring Boot与Hibernate实操,按考试考点分类整理,含技术详解与代码示例,助力掌握最新Java技术与应用。
92 3
|
2月前
|
前端开发 Java API
酒店管理系统基于 JavaFX Spring Boot 和 React 经典项目重构实操
本文介绍了基于现代技术栈的酒店管理系统开发方案,整合了JavaFX、Spring Boot和React三大技术框架。系统采用前后端分离架构,JavaFX构建桌面客户端,React开发Web管理界面,Spring Boot提供RESTful API后端服务。核心功能模块包括客房管理和客户预订流程,文中提供了JavaFX实现的客房管理界面代码示例和React开发的预订组件代码,展示了如何实现客房信息展示、添加修改操作以及在线预订功能。
155 1
|
3月前
|
Java API 微服务
Java 21 与 Spring Boot 3.2 微服务开发从入门到精通实操指南
《Java 21与Spring Boot 3.2微服务开发实践》摘要: 本文基于Java 21和Spring Boot 3.2最新特性,通过完整代码示例展示了微服务开发全流程。主要内容包括:1) 使用Spring Initializr初始化项目,集成Web、JPA、H2等组件;2) 配置虚拟线程支持高并发;3) 采用记录类优化DTO设计;4) 实现JPA Repository与Stream API数据访问;5) 服务层整合虚拟线程异步处理和结构化并发;6) 构建RESTful API并使用Springdoc生成文档。文中特别演示了虚拟线程配置(@Async)和StructuredTaskSco
365 0
|
SQL 数据库
Spring5入门到实战------13、使用JdbcTemplate操作数据库(批量增删改)。具体代码+讲解 【下篇】
这篇文章是Spring5框架的实战教程,深入讲解了如何使用JdbcTemplate进行数据库的批量操作,包括批量添加、批量修改和批量删除的具体代码实现和测试过程,并通过完整的项目案例展示了如何在实际开发中应用这些技术。
Spring5入门到实战------13、使用JdbcTemplate操作数据库(批量增删改)。具体代码+讲解 【下篇】
|
XML Java 关系型数据库
Spring6 JdbcTemplate和事务
Spring6 JdbcTemplate和事务
|
XML 数据库 数据格式
Spring5入门到实战------14、完全注解开发形式 ----JdbcTemplate操作数据库(增删改查、批量增删改)。具体代码+讲解 【终结篇】
这篇文章是Spring5框架的实战教程的终结篇,介绍了如何使用注解而非XML配置文件来实现JdbcTemplate的数据库操作,包括增删改查和批量操作,通过创建配置类来注入数据库连接池和JdbcTemplate对象,并展示了完全注解开发形式的项目结构和代码实现。
Spring5入门到实战------14、完全注解开发形式 ----JdbcTemplate操作数据库(增删改查、批量增删改)。具体代码+讲解 【终结篇】
|
SQL XML Java
Spring5入门到实战------12、使用JdbcTemplate操作数据库(增删改查)。具体代码+讲解 【上篇】
这篇文章是Spring5框架的实战教程,详细讲解了如何使用JdbcTemplate进行数据库的增删改查操作,包括在项目中引入依赖、配置数据库连接池、创建实体类、定义DAO接口及其实现,并提供了具体的代码示例和测试结果,最后还提供了完整的XML配置文件和测试代码。
Spring5入门到实战------12、使用JdbcTemplate操作数据库(增删改查)。具体代码+讲解 【上篇】