七、jdbcTemplate

一、JdbcTemplate(概念和准备)

1.什么是JdbcTemplate

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

2.准备工作

  • 引入相关的jar包

  • 在spring配置文件配置数据库连接池
<!--数据库连接池-->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">
    <property name="url" value="jdbc:mysql://localhost:3306/atguigu"/>
    <property name="username" value="root"/>
    <property name="password" value="root"/>
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
</bean>
  • 配置JdbcTemplate对象,注入DataSource
<!--JdbcTemplate对象-->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
    <!--注入dataSource,源码是set注入-->
    <property name="dataSource" ref="dataSource"></property>
</bean>
  • 创建service类,创建dao类,在dao注入JdbcTemplate对象

 ②配置文件

 ③加上注解,创建对象

④在dao里@Autowired注入属性

⑤在Service里@Autowired注入属性

 二、JdbcTemplate操作数据库(添加)

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

 

 JavaBean

2.编写service和dao

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

①接口定义

②在实现类,调用jdbcTemplate.update(String sql,Object… args)方法

参数一sql语句

参数二可变参数

 ③在userService里面调用添加方法

 ④测试

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

1.在UserDao添加修改,删除的方法

 2.在UserImpl实现接口的方法

 3.在UserService方法里调用

 4.测试

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

1.查询表里面多少记录

2.使用JdbcTemplate实现查询返回某个值代码

  1.  参数一sql语句
  2. 参数二返回的类型 返回数字就是Integer.class
  3. ①在UserDao创建查询记录方法

  4.  ②在UserDaoImpl实现类里面实现接口方法queryForObject()

  5.  ③在UserService方法里面调用dao

  6. //查询记录
    public int count(){
       return userDao.selectCount();
    }
    

    ④测试

  7. @Test
    public void count(){
       ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
       UserService userService = context.getBean("userService", UserService.class);
       System.out.println(userService.count());
    }
    

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

  8. 1.场景:查询图书详情

  9. 2.JdbcTemplate实现查询返回对象

  • 参数一:sql语句

    参数二:RowMapper接口,返回不同类型数据。使用这个接口实现类完成数据封装

    参数三:sql语句值

  • ①在UserDao接口创建方法

  • ②在UserDaoImpl实现这个方法queryForObject()

    参数二new BeanPropertyRowMapper<User>(User.class)写上返回对象的类型

  • @Override
    public User findUserInfo(Integer id) {
       String sql = "select * from t_user where id = ?";
       User user = jdbcTemplate.queryForObject(sql,new BeanPropertyRowMapper<User>(User.class),id);
       return user;
    }
    

    ③在UserService方法里面调用

  • //查询一个对象
    public User findOne(Integer id){
       return userDao.findUserInfo(id);
    }
    

    ④测试

  • @Test
    public void findOne(){
       ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
       UserService userService = context.getBean("userService", UserService.class);
       System.out.println(userService.findOne(1));
    }
    

    User{id=1, username='admin', password='admin', email='admin@atguigu.com'}

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

  • 1.场景:查询图书列表分页

  • 2.调用JdbcTemplate方法实现集合

  1. 参数一:sql语句

    参数二:RowMapper接口,返回不同类型数据。使用这个接口实现类完成数据封装

    参数三:sql语句值

  2. ①在UserDao添加查询集合的方法

  3. ②在UserDaoImpl实现这个方法 new BeanPropertyRowMapper<User>(User.class)

  4.  ③在UserService方法里调用这个方法

  5.  ④测试

  6. @Test
    public void findAll(){
       ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
       UserService userService = context.getBean("userService", UserService.class);
       List<User> bookList = userService.findAll();
       System.out.println(userService.findAll());
    }
    

    七、JdbcTemplate操作数据库(批量添加操作)

  7. 1.批量操作:操作表里面的多条记录

    2.JdbcTemplate实现批量添加操作

  • 参数一:sql语句

    参数二:List集合,添加多条记录的数据

  • ①在UserDao接口里面添加batchAddUser方法

  •  ②在UserDaoImpl类里面实现这个方法batchUpdate()

  •  ③在UserService类里面调用方法

  • //批量添加
    public void batchAdd(List<Object[]> batchArgs){
        userDao.batchAddUser(batchArgs);
    }
    

    ④测试

  •  八、JdbcTemplate操作数据库(批量修改操作)

  • 1.JdbcTemplate实现批量修改操作

  1. 参数一:sql语句

    参数二:List集合,修改多条记录的数据

  2. ①在UserDao接口里面添加批量修改的方法

  3.  ②在UserDaoImpl实现接口的方法

  4.  ③在UserService类里面调用方法

  5. //批量修改
    public void batchUpdate(List<Object[]> batchArgs){
       userDao.batchUpdate(batchArgs);
    }
    

    ④测试 Object[] u1 = {username, password, email, id};

  6.  九、JdbcTemplate操作数据库(批量删除操作)

  7. 1.JdbcTemplate实现批量删除操作

    ①在UserDao接口添加方法

  8.  ②在UserDaoImpl实现类里面实现方法

  9. @Override
    public void batchDelete(List<Object[]> batchArgs) {
       String sql = "delete from t_user where id= ?";
       int[] ints = jdbcTemplate.batchUpdate(sql, batchArgs);
       System.out.println(Arrays.toString(ints));
    }
    

    ③在UserService调用方法

  10. //批量删除
    public void batchDelete(List<Object[]> batchArgs){
       userDao.batchDelete(batchArgs);
    }
    

    ④测试

  11. @Test
    public void batchdelete() {
       ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
       UserService userService = context.getBean("userService", UserService.class);
       List<Object[]> batchArgs = new ArrayList<>();
       Object[] u1 = {30};
       Object[] u2 = {31};
       Object[] u3 = {32};
       batchArgs.add(u1);
       batchArgs.add(u2);
       batchArgs.add(u3);
       userService.batchDelete(batchArgs);
    }
    

     

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值