Spring框架中的JdbcTemplate

 更新时间:2025年05月15日 14:36:09   作者:真真最可爱  
这篇文章主要介绍了Spring框架中的JdbcTemplate相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧

JdbcTemplate

1、什么是 JdbcTemplate

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

2、准备工作

(1)引入相关 jar 包

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

<!-- 数据库连接池 -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">
 <property name="url" value="jdbc:mysql:///user_db" />
 <property name="username" value="root" />
 <property name="password" value="root" />
 <property name="driverClassName" value="com.mysql.jdbc.Driver" />
</bean>

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

<!-- JdbcTemplate 对象 -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
 <!--注入 dataSource  源码中是set方式构造,所以用property。有参构造用的是constructor-arg-->
 <property name="dataSource" ref="dataSource"></property>
</bean>

(4)创建 service 类,创建 dao 类,在 dao 注入 jdbcTemplate 对象

配置文件

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

Service类

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

Dao类

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

JdbcTemplate 操作数据库(添加)

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

!](https://img-blog.csdnimg.cn/98bb8039e524427f906680d09d94663b.png)

2、编写 service 和 dao

(1)在 dao 进行数据库添加操作
(2)调用 JdbcTemplate 对象里面 update 方法实现添加操作

  • 第一个参数: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");
    //要调用Service类中的对象
    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 实现查询返回某个值代码

  • 第一个参数:sql 语句
  • 第二个参数:返回类型 Class
//查询表记录数
@Override
public int selectCount() {
    String sql = "select count(*) from t_book";
    Integer count = jdbcTemplate.queryForObject(sql, Integer.class);
    return count;
}

JdbcTemplate 操作数据库(查询返回对象)

1、场景:查询图书详情

2、JdbcTemplate 实现查询返回对象

  • 第一个参数: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;
}

JdbcTemplate 操作数据库(查询返回集合)

1、场景:查询图书列表分页…
2、调用 JdbcTemplate 方法实现查询返回集合

  • 第一个参数: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 实现批量添加操作

  • 第一个参数: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);

到此这篇关于Spring框架中的JdbcTemplate的文章就介绍到这了,更多相关Spring JdbcTemplate内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringBoot配置MySQL5.7与MySQL8.0的异同点详解

    SpringBoot配置MySQL5.7与MySQL8.0的异同点详解

    MySQL 是 Java 开发中最常用的数据库之一,而 Spring Boot 提供了便捷的配置方式,随着 MySQL 8.0 的普及,许多开发者需要从 MySQL 5.7 升级到 8.0,在实际开发中,二者的配置方式既有相似之处,也有一些需要特别注意的不同点,所以本文给大家详细介绍了它们的异同点
    2024-12-12
  • Java自定义长度可变数组的操作

    Java自定义长度可变数组的操作

    这篇文章主要介绍了Java自定义长度可变数组的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • Spring系列中的beanFactory与ApplicationContext

    Spring系列中的beanFactory与ApplicationContext

    这篇文章主要介绍了Spring系列中的beanFactory与ApplicationContext,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09
  • java MultipartFile文件上传重命名详细代码示例

    java MultipartFile文件上传重命名详细代码示例

    在文件上传功能开发中,为防止文件重名导致数据覆盖,常见的做法是在文件名前加上UUID或时间戳来区分,这篇文章主要介绍了java MultipartFile multipartFile文件上传重命名的相关资料,需要的朋友可以参考下
    2024-09-09
  • MyBatis中不建议使用where 1=1原因详解

    MyBatis中不建议使用where 1=1原因详解

    这篇文章主要为大家介绍了MyBatis中不建议使用where 1=1的原因详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • SpringBoot整合Netty+Websocket实现消息推送的示例代码

    SpringBoot整合Netty+Websocket实现消息推送的示例代码

    WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据,本文主要介绍了SpringBoot整合Netty+Websocket实现消息推送的示例代码,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01
  • java异步编程的7种实现方式小结

    java异步编程的7种实现方式小结

    异步处理的实现方式有很多种,常见多线程,消息中间件,发布订阅的广播模式,本文就详细的介绍java异步编程的7种实现方式,感兴趣的可以了解一下
    2023-03-03
  • 解读Spring Bean的作用域

    解读Spring Bean的作用域

    这篇文章主要介绍了解读Spring Bean的作用域,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • Spring实战之Bean的后处理器操作示例

    Spring实战之Bean的后处理器操作示例

    这篇文章主要介绍了Spring实战之Bean的后处理器操作,结合实例形式详细分析了Bean的后处理器相关配置、操作方法及使用注意事项,需要的朋友可以参考下
    2019-12-12
  • idea无法识别注解,或pom文件异常的问题及解决

    idea无法识别注解,或pom文件异常的问题及解决

    文章介绍了三种解决IDEA无法识别注解或POM文件异常的方法:1.检查省电模式设置;2.为未识别的POM文件添加Maven工程;3.移除并重新添加有问题的模块
    2026-01-01

最新评论