一、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实现查询返回某个值代码
 参数一sql语句 参数一sql语句
- 参数二返回的类型 返回数字就是Integer.class
-  ①在UserDao创建查询记录方法 
-   ②在UserDaoImpl实现类里面实现接口方法queryForObject() 
-   ③在UserService方法里面调用dao 
-  //查询记录 public int count(){ return userDao.selectCount(); }④测试 
-  @Test public void count(){ ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml"); UserService userService = context.getBean("userService", UserService.class); System.out.println(userService.count()); }五、JdbcTemplate操作数据库(查询返回对象)
-  1.场景:查询图书详情 
-  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方法实现集合 
-   参数一:sql语句 参数二:RowMapper接口,返回不同类型数据。使用这个接口实现类完成数据封装 参数三:sql语句值 
-  ①在UserDao添加查询集合的方法 
-   
-  ②在UserDaoImpl实现这个方法 new BeanPropertyRowMapper<User>(User.class) 
-   
 ③在UserService方法里调用这个方法 
-   ④测试 
-  @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操作数据库(批量添加操作)
-  1.批量操作:操作表里面的多条记录 2.JdbcTemplate实现批量添加操作 
-   参数一:sql语句 参数二:List集合,添加多条记录的数据 
-  ①在UserDao接口里面添加batchAddUser方法 
-   ②在UserDaoImpl类里面实现这个方法batchUpdate() 
-   ③在UserService类里面调用方法 
-  //批量添加 public void batchAdd(List<Object[]> batchArgs){ userDao.batchAddUser(batchArgs); }④测试 
-   八、JdbcTemplate操作数据库(批量修改操作)
-  1.JdbcTemplate实现批量修改操作 
-   参数一:sql语句 参数二:List集合,修改多条记录的数据 
-  ①在UserDao接口里面添加批量修改的方法 
-   ②在UserDaoImpl实现接口的方法 
-   ③在UserService类里面调用方法 
-  //批量修改 public void batchUpdate(List<Object[]> batchArgs){ userDao.batchUpdate(batchArgs); }④测试 Object[] u1 = {username, password, email, id}; 
-   九、JdbcTemplate操作数据库(批量删除操作)
-  1.JdbcTemplate实现批量删除操作 ①在UserDao接口添加方法 
-   ②在UserDaoImpl实现类里面实现方法 
-  @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调用方法 
-  //批量删除 public void batchDelete(List<Object[]> batchArgs){ userDao.batchDelete(batchArgs); }④测试 
-  @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); } 



















