JDBCTemplate
JDBCTemplate(概念和准备)
-
什么是JdbcTemplate
- Spring框架对JDBC进行封装,使用JdbcTemplate方便实现对数据库的操作
-
准备工作
-
引入相关的jar包
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NOyWzANa-1638844933137)(C:\Users\Master\AppData\Roaming\Typora\typora-user-images\image-20211204205952748.png)]
-
数据库连接池
<!--数据库连接池--> <bean id="dateSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close"> <property name="driverClassName" value="com.mysql.jdbc.Driver"></property> <!--这里注意要使用utf8编码--> <property name="url" value="jdbc:mysql://localhost:3306/dxz?characterEncoding=utf8"></property> <property name="username" value="root"></property> <property name="password" value="root"></property> </bean>
-
配置JdbcTemplate对象,注入DataSource
<!--创建jdbcTemplate对象--> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <!--注入dataSource对象--> <property name="dataSource" ref="dateSource"></property> </bean>
-
创建一个service类,创建dao类,在dao注入jdbcTemplate对象
配置文件:
<!--组件扫描--> <context:component-scan base-package="com.dxz.demo.book"></context:component-scan>
source:
@Service public class BookSource { @Autowired private BookImp bookImp; }
BookImp:
@Component public class BookImp implements Book{ @Autowired private JdbcTemplate jdbcTemplate; }
-
-
JdbcTemplate操作数据库(添加)
-
对应数据库创建实体类
-
编写service和dao
-
在Book中进行数据库添加操作
-
调用JdbcTemplate对象里面updata方法实现添加操作
这个方法有两个参数:
第一个参数sql语句,第二个参数可变参数,设置sql语句值
@Component public class BookImp implements Book{ @Autowired private JdbcTemplate jdbcTemplate; public void add(User user){ String sql1 = "insert into spring values(?,?,?);"; Object[] args = {user.getUserId(),user.getUserName(),user.getUserStatus()}; int result = jdbcTemplate.update(sql1,args); System.out.println(result); } }
-
在BookSource中完成添加数据的操作
@Service public class BookSource { @Autowired private BookImp bookImp; public void bookAdd(User user){ bookImp.add(user); } }
-
-
-
JdbcTemplate操作数据库(修改和删除)
-
在Book接口中添加删除和修改两个方法
public interface Book { //添加方法 public void add(User user); //修改方法 public void update(User user); //删除方法 public void delete(String id); }
-
在BookImp实现类之中重写删除和修改两个方法
//修改方法 public void update(User user){ String sql2 = "update spring set name=?,status=? where id=?;"; Object[] args = {user.getUserName(),user.getUserStatus(),user.getUserId()}; int result = jdbcTemplate.update(sql2,args); System.out.println(result); } //删除方法 public void delete(String id) { String sql3 = "delete from spring where id=?"; int result = jdbcTemplate.update(sql3,id); System.out.println(result); }
-
在BookSource类中添加删除和修改
//数据库的修改操作 public void bookUpdate(User user){ bookImp.update(user); } //数据库的删除操作 public void bookDelete(String id){ bookImp.delete(id); }
-
-
JdbcTemplate操作数据库(查询)
-
查询返回某个值
//查询返回所有数据的个数 @Override public int selectCountBook() { String sql4 = "select count(*) from spring"; int result = jdbcTemplate.queryForObject(sql4,Integer.class); System.out.println(result); return result; }
-
查询返回对象
-
场景:查询图书详情
-
JdbcTemplate实现查询返回
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-riAguf5p-1638844933138)(C:\Users\Master\AppData\Roaming\Typora\typora-user-images\image-20211205110020838.png)]
总共有三个参数
(1)sql语句。
(2)RowMapper是接口,针对返回不同类型的数据,使用接口里面实现类完成数据封装
(3)sql语句值
*注意数据库中的字段名和java中的字段名一定要一样
@Override public User selectObjectBook(String id) { String sql5 = "select * from spring where id=?"; User user = jdbcTemplate.queryForObject(sql5, new BeanPropertyRowMapper<User>(User.class),id); return user; }
-
-
查询返回集合
-
场景:查询图书列表分页
-
调用JdbcTemplate方法实现查询返回集合
调用的方法是query,返回值为list集合
总共有三个参数
(1)sql语句。
(2)RowMapper是接口,针对返回不同类型的数据,使用接口里面实现类完成数据封装
(3)sql语句值
-
-
-
JdbcTemplate操作数据库(批量操作)
-
批量操作就是操作表里面的多条记录
-
JdbcTemplate实现批量添加操作
batchUpdate(String sql,List<Object[]> batchArgs)
有两个参数
第一个参数:sql语句
第二个参数:List集合,添加多条记录
@Override public void adds() { String sql7 = "insert into spring values(?,?,?);"; List<Object[]> listBatch = new ArrayList<>(); Object[] o1 = {"3","java","a"}; Object[] o2 = {"4","c++","b"}; Object[] o3 = {"5","mysql","c"}; listBatch.add(o1); listBatch.add(o2); listBatch.add(o3); int[] result = jdbcTemplate.batchUpdate(sql7,listBatch); System.out.println(Arrays.toString(result)); }
-
istBatch.add(o1);
listBatch.add(o2);
listBatch.add(o3);
int[] result = jdbcTemplate.batchUpdate(sql7,listBatch);
System.out.println(Arrays.toString(result));
}
```