Spring<四>---JdbcTemplate

一、JdbcTemplate

1.1 概念

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

1.2 准备工作

(1)引入相关 jar 包
在这里插入图片描述
(2)在 spring 配置文件配置数据库连接池
在这里插入图片描述
(3)配置 JdbcTemplate 对象,注入 DataSource
在这里插入图片描述
(4)创建 service 类,创建 dao 类,在 dao 注入 jdbcTemplate 对象

首先,进行配置文件
扫描组件:

在这里插入图片描述

  • Service
    在这里插入图片描述
  • Dao
    在这里插入图片描述

二、JdbcTemplate 操作数据库

2.1 添加

(1)对应数据库创建实体类

在这里插入图片描述
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) {
        //创建sql语句
        String sql = "insert into t_book values(?,?,?)";
        //调用方法实现
        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);
    }

在这里插入图片描述

2.2 修改和删除

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

2.3 查询

2.3.1 查询返回某个值

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

2.3.2 查询返回对象

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

2.3.3 查询返回集合

应用场景:查询图书列表分页…
实现方法:调用 JdbcTemplate 方法
在这里插入图片描述

有三个参数 
第一个参数:sql 语句
 第二个参数:RowMapper 是接口,针对返回不同类型数据,使用这个接口里面实现类完成数据封装
第三个参数:sql 语句值
//查询返回集合
    @Override
    public Book findAllBook() {
        String sql = "select * from t_book";
        //调用方法
        List<Book> bookList = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<Book>(Book.class));
        return bookList;
    }

2.4 批量操作

1、批量操作:操作表里面多条记录
2、JdbcTemplate 实现批量添加操作

在这里插入图片描述

 有两个参数 
第一个参数:sql 语句
第二个参数:List 集合,添加多条记录数据

在这里插入图片描述

//批量添加
    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(batchAdd);

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 = {"343","a3","2"};
        Object[] o2 = {"eqeq","c++","4"};
        Object[] o3 = {"131","1231","ew"};
        batchArgs.add(o1);
        batchArgs.add(o2);
        batchArgs.add(o3);
        //调用方法实现批量修改
        BookService.batchAdd(batchArgs);

4、JdbcTemplate 实现批量删除操作
在这里插入图片描述
测试代码:

//批量删除
        List<Object[]> batchArgs = new ArrayList<>();
        Object[] o1 = {"3"};
        Object[] o2 = {"4"};
        batchArgs.add(o1);
        batchArgs.add(o2);
        //调用方法实现批量删除
        bookService.batchDelete(batchArgs);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

祈一_1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值