spring之JdbcTemplate(快速上手实操)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 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); 


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
4月前
|
Java Spring
使用JDBCTemplate实现与Spring结合,方法公用 ——测试(EmpDaoImplTest)
使用JDBCTemplate实现与Spring结合,方法公用 ——测试(EmpDaoImplTest)
|
4月前
|
XML Java 数据库
【Spring】通过JdbcTemplate实现CRUD操作
【Spring】通过JdbcTemplate实现CRUD操作
59 0
|
27天前
|
SQL 数据库
Spring5入门到实战------13、使用JdbcTemplate操作数据库(批量增删改)。具体代码+讲解 【下篇】
这篇文章是Spring5框架的实战教程,深入讲解了如何使用JdbcTemplate进行数据库的批量操作,包括批量添加、批量修改和批量删除的具体代码实现和测试过程,并通过完整的项目案例展示了如何在实际开发中应用这些技术。
Spring5入门到实战------13、使用JdbcTemplate操作数据库(批量增删改)。具体代码+讲解 【下篇】
|
27天前
|
XML 数据库 数据格式
Spring5入门到实战------14、完全注解开发形式 ----JdbcTemplate操作数据库(增删改查、批量增删改)。具体代码+讲解 【终结篇】
这篇文章是Spring5框架的实战教程的终结篇,介绍了如何使用注解而非XML配置文件来实现JdbcTemplate的数据库操作,包括增删改查和批量操作,通过创建配置类来注入数据库连接池和JdbcTemplate对象,并展示了完全注解开发形式的项目结构和代码实现。
Spring5入门到实战------14、完全注解开发形式 ----JdbcTemplate操作数据库(增删改查、批量增删改)。具体代码+讲解 【终结篇】
|
27天前
|
SQL XML Java
Spring5入门到实战------12、使用JdbcTemplate操作数据库(增删改查)。具体代码+讲解 【上篇】
这篇文章是Spring5框架的实战教程,详细讲解了如何使用JdbcTemplate进行数据库的增删改查操作,包括在项目中引入依赖、配置数据库连接池、创建实体类、定义DAO接口及其实现,并提供了具体的代码示例和测试结果,最后还提供了完整的XML配置文件和测试代码。
Spring5入门到实战------12、使用JdbcTemplate操作数据库(增删改查)。具体代码+讲解 【上篇】
|
3月前
|
SQL Java 数据库连接
Spring5系列学习文章分享---第四篇(JdbcTemplate+概念配置+增删改查数据+批量操作 )
Spring5系列学习文章分享---第四篇(JdbcTemplate+概念配置+增删改查数据+批量操作 )
25 0
|
4月前
|
XML Java 关系型数据库
Spring6 JdbcTemplate和事务
Spring6 JdbcTemplate和事务
|
4月前
|
SQL Java 数据库连接
jpa、hibernate、spring-data-jpa、jdbcTemplate
jpa、hibernate、spring-data-jpa、jdbcTemplate
|
4月前
|
Java Spring
使用JDBCTemplate实现与Spring结合,方法公用 ——共用实现类(BaseImpl)
使用JDBCTemplate实现与Spring结合,方法公用 ——共用实现类(BaseImpl)
|
4月前
|
Java 数据库连接 数据库
Spring系列文章:Spring使用JdbcTemplate
Spring系列文章:Spring使用JdbcTemplate