JdbcTemplate 实现增删改查

本文介绍如何使用Spring框架中的JdbcTemplate进行数据库操作,包括配置、添加、修改、删除及查询等核心功能,并提供了详细的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JdbcTemplate

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

  • 引入相关依赖

    image-20221120211223269

  • 在 Spring 配置文件配置数据库连接池

    • <!--    配置数据库连接-->
      <context:property-placeholder location="druid.properties"></context:property-placeholder>
      <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
          <property name="url" value="${prop.url}"></property>
          <property name="driverClassName" value="${prop.driverClassName}"></property>
          <property name="username" value="${prop.username}"></property>
          <property name="password" value="${prop.password}"></property>
      </bean>
      
  • 配置 JdbcTemplate 对象,注入 DataSource

    • <!--    配置 jdbctemplate 对象-->
      <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
          <!-- 注入 dataSource  -->
          <property name="dataSource" ref="dataSource"></property>
      </bean>
      
  • 创建 Service 类,创建 dao 类,在 dao 注入 jdbcTemplate 对象

    • 配置文件

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

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

      • @Repository
        public class BookDaoImpl implements BookDao{
        
            //注入 jdbcTemplate
            @Autowired
            private JdbcTemplate jdbcTemplate;
        
            @Override
            public void add() {
        
            }
        }
        

JdbcTemplate 操作 数据库


对应数据库创建实体类

public class Book {
    
    private Integer id;
    private String name;

    public Book(Integer id, String name) {
        this.id = id;
        this.name = name;
    }

    public Book() {
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Book{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }
}
添加操作
  • 编写 service 和 dao

    • 在 dao 进行数据库添加操作

    • 调用 JdbcTemplate 对象里面 update 方法

      • image-20221120214727925
      • 有两个参数
        • 第一个参数:sql 语句
        • 第二个参数:可变参数,设置 SQL 语句值
    • @Repository
      public class BookDaoImpl implements BookDao{
      
      
          //注入 jdbcTemplate
          @Autowired
          private JdbcTemplate jdbcTemplate;
      
          @Override
          public void add() {
      
          }
      
          @Override
          public void addBook(Book book) {
      
              String sql = "INSERT INTO t_book VALUES(?,?)";
              Object[] args = {book.getId(),book.getName()};
              int update = jdbcTemplate.update(sql, args);
              System.out.println(update);
          }
      }
      
  • 测试类

    • @Test
      public void addBook() {
      
          ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("jdbctemplate.xml");
          BookService bookService = context.getBean("bookService", BookService.class);
          bookService.addBook(new Book(1,"csq"));
      }
      
修改
/**
     * 更新书
     *
     * @param book 书
     */
@Override
public void updateBook(Book book) {
    String sql = "UPDATE t_book SET name=? WHERE id=?";
    Object[] args = {book.getName(),book.getId()};
    int update = jdbcTemplate.update(sql, args);
    System.out.println(update);
}
删除
@Test
public void deleteBook() {

    ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("jdbctemplate.xml");
    BookService bookService = context.getBean("bookService", BookService.class);
    bookService.deleteBook(1);
}
查询返回某个值
  • 查询表里面有多少条记录,返回是某个值

  • 使用 JdbcTemplate 实现查询返回某个值

    • image-20221120222916890

      • 有两个参数
        • 第一个参数:SQL 语句
        • 第二个参数:返回类型 Class
    • @Override
      public void selectCount() {
          String sql = "SELECT COUNT(*) FROM t_book";
          Integer count = jdbcTemplate.queryForObject(sql, Integer.class);
          System.out.println(count);
      }
      
查询返回对象
  • 场景:查询图书详情

  • JdbcTemplate 实现查询返回对象

    • image-20221120223525151

    • 有三个参数

      • 第一个参数:SQL 语句
      • 第二个参数:RowMapper 是接口,针对返回不同类型数据,使用这个接口里面实现类完成数据封装
      • 第三个参数:SQL 语句填充值
    • @Override
      public Book queryForBook(Integer id) {
      
          String sql = "SELECT * FROM t_book WHERE id=?";
          Book book = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<Book>(Book.class), id);
          return book;
      }
      
查询返回集合
  • 场景:查询图书列表分页

  • 调用 JdbcTemplate 方法实现查询返回集合

    • image-20221120224252695

    • 有三个参数

      • 第一个参数:SQL 语句
      • 第二个参数:RowMapper 是接口,针对返回不同类型数据,使用这个接口里面实现类完成数据封装
      • 第三个参数:SQL 语句值
    • @Override
      public List<Book> queryBooks() {
      
          String sql = "SELECT * FROM t_book";
          return jdbcTemplate.query(sql, new BeanPropertyRowMapper<Book>(Book.class));
      }
      
批量操作
  • 批量操作:操作表里面多条记录

  • JdbcTemplate 实现批量添加操作

    • image-20221120225055160

    • 有两个参数

      • 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));
      }
      

批量修改和批量删除操作和批量添加一样,更改一下SQL 语句即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值