一、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语句
- 参数二返回的类型 返回数字就是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); }