1、Spring5-JdbcTemplate-《Java学习知识库》

admin 2025-11-02 01:26:20 编程 来源:ZONE.CI 全球网 0 阅读模式
  • JdbcTemplate的概念和准备
    • 1、什么是 JdbcTemplate
    • 2、准备工作
      • (1)引入相关 jar 包
      • (2)在 spring 配置文件配置数据库连接池
      • (3)配置 JdbcTemplate 对象,注入 DataSource
      • (4)创建 service 类,创建 dao 类,在 dao 注入 jdbcTemplate 对象
    • 2、编写 service 和 dao
      • (1)在 dao 进行数据库添加操作
      • (2)调用 JdbcTemplate 对象里面 update 方法实现添加操作
  • JdbcTemplate 操作数据库(修改和删除)
  • JdbcTemplate 操作数据库(查询返回某个值)
  • JdbcTemplate 操作数据库(查询返回对象)
  • JdbcTemplate 操作数据库(查询返回集合)
  • JdbcTemplate 操作数据库(批量操作)

    JdbcTemplate的概念和准备

    1、什么是 JdbcTemplate

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

    2、准备工作

    (1)引入相关 jar 包

    QQ截图20220421093220.png

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

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

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

    1. <!-- JdbcTemplate 对象 -->
    2. <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
    3. <!--注入 dataSource-->
    4. <property name="dataSource" ref="dataSource"></property>
    5. </bean>

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

    • 配置文件

      1. <!-- 组件扫描 -->
      2. <context:component-scan base-package="com.atguigu"></context:component-scan>
      1. @Service
      2. public class BookService {
      3. //注入Dao
      4. @Autowired
      5. private BookDao bookDao;
      6. }

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

    }

    1. <a name="zg56S"></a>
    2. # JdbcTemplate 操作数据库(添加)
    3. <a name="vahCr"></a>
    4. ## 1、对应数据库创建实体类
    5. ```java
    6. package com.atguigu.spring5.entity;
    7. public class Book {
    8. private String userId;
    9. private String username;
    10. private String ustatus;
    11. public String getUserId() {
    12. return userId;
    13. }
    14. public void setUserId(String userId) {
    15. this.userId = userId;
    16. }
    17. public String getUsername() {
    18. return username;
    19. }
    20. public void setUsername(String username) {
    21. this.username = username;
    22. }
    23. public String getUstatus() {
    24. return ustatus;
    25. }
    26. public void setUstatus(String ustatus) {
    27. this.ustatus = ustatus;
    28. }
    29. }

    2、编写 service 和 dao

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

    1. public interface BookDao {
    2. //添加的方法
    3. public abstract void add(Book book);
    4. }

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

    QQ截图20220421131017.png⚫ 有两个参数 ⚫ 第一个参数:sql 语句 ⚫ 第二个参数:可变参数,设置 sql 语句值

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

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

    1. //修改的方法
    2. @Override
    3. public void updateBook(Book book) {
    4. String sql = "update t_book set username=?,ustatus=? where user_id=?";
    5. Object[] args = {book.getUsername(),book.getUstatus(),book.getUserId()};
    6. jdbcTemplate.update(sql,args);
    7. }
    8. //删除的方法
    9. @Override
    10. public void delete(String id) {
    11. String sql = "delete from t_book where user_id=?";
    12. int update = jdbcTemplate.update(sql, id);
    13. System.out.println(update);
    14. }

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

    1、查询表里面有多少条记录,返回是某个值 2、使用 JdbcTemplate 实现查询返回某个值代码QQ截图20220421143935.png有两个参数 ⚫ 第一个参数:sql 语句 ⚫ 第二个参数:返回类型 Class

    1. @Override
    2. public int selectCount() {
    3. String sql = "select count(*) from t_book";
    4. Integer count = jdbcTemplate.queryForObject(sql, Integer.class);
    5. return count;
    6. }

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

    1、场景:查询图书详情 2、JdbcTemplate 实现查询返回对象QQ截图20220421150927.png有三个参数 ⚫ 第一个参数:sql 语句 ⚫ 第二个参数:RowMapper 是接口,针对返回不同类型数据,使用这个接口里面实现类完成数据封装 使用子接口:BeanPropertyRowMapper<>⚫ 第三个参数:sql 语句值

    1. @Override
    2. public Book findBookInfo(String id) {
    3. String sql = "select * from t_book where user_id = ?";
    4. Book book = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<Book>(Book.class), id);
    5. return book;
    6. }

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

    1、场景:查询图书列表分页… 2、调用 JdbcTemplate 方法实现查询返回集合QQ截图20220421152518.png有三个参数 ⚫ 第一个参数:sql 语句 ⚫ 第二个参数:RowMapper 是接口,针对返回不同类型数据,使用这个接口里面实现类完成数据封装 使用子接口:BeanPropertyRowMapper<>⚫ 第三个参数:sql 语句值

    1. @Override
    2. public List<Book> findAllBook() {
    3. String sql = "select * from t_book";
    4. List<Book> bookList = jdbcTemplate.query(sql, new BeanPropertyRowMapper<Book>(Book.class));
    5. return bookList;
    6. }

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

    1、批量操作:操作表里面多条记录 2、JdbcTemplate 实现批量添加操作QQ截图20220421153615.png有两个参数 ⚫ 第一个参数:sql 语句 ⚫ 第二个参数:List 集合,添加多条记录数据

    1. @Override
    2. public void batchAddBook(List<Object[]> batchArgs) {
    3. String sql = "insert into t_book values(?,?,?)";
    4. int[] ints = jdbcTemplate.batchUpdate(sql, batchArgs);
    5. System.out.println(Arrays.toString(ints));
    6. }

    3、JdbcTemplate 实现批量修改操作

    1. @Override
    2. public void batchUpdateBook(List<Object[]> batchArgs) {
    3. String sql = "update t_book set username=?,ustatus=? where user_id=?";
    4. int[] ints = jdbcTemplate.batchUpdate(sql, batchArgs);
    5. System.out.println(Arrays.toString(ints));
    6. }

    4、JdbcTemplate 实现批量删除操作

    1. @Override
    2. public void batchDeleteBook(List<Object[]> batchArgs) {
    3. String sql = "delete from t_book where user_id=?";
    4. int[] ints = jdbcTemplate.batchUpdate(sql, batchArgs);
    5. System.out.println(Arrays.toString(ints));
    6. }
    以太坊cppgolang区别 编程

    以太坊cppgolang区别

    以太坊是一种去中心化的开源平台,它采用智能合约技术,旨在构建和运行不受干扰的分布式应用程序。作为目前最受欢迎的区块链平台之一,以太坊提供了多种编程语言的支持,其
    progolang 编程

    progolang

    Go语言(Golang)是由Google开发的一门静态类型编程语言。作为一名专业的Golang开发者,我深知这门语言的优势和特点。在本文中,我将介绍Golang
    golangn个发送者 编程

    golangn个发送者

    Golang是一种开源的编程语言,由Google团队开发,旨在提高程序的并发性和简化软件开发过程。在Go语言中,有时需要向多个接收者发送信息。本文将介绍如何在G
    golang技能图谱 编程

    golang技能图谱

    从互联网行业的快速发展到人工智能技术的日益成熟,各种编程语言也应运而生。而在这众多的编程语言中,Golang(即Go)作为一门强大且高效的开发语言备受关注。Go
    评论:0   参与:  5