SpringBoot JdbcTemplate批量操作的示例代码批量操作的示例代码
本篇文章主要介绍了SpringBoot JdbcTemplate批量操作的示例代码,小编觉得挺不错的,现在分享给大家,也
给大家做个参考。一起跟随小编过来看看吧
前言前言
在我们做后端服务Dao层开发,特别是大数据批量插入的时候,这时候普通的ORM框架(Mybatis、hibernate、JPA)就无法满
足程序对性能的要求了。当然我们又不可能使用原生的JDBC进行操作,那样尽管效率会高,但是复杂度会上升。
综合考虑我们使用Spring中的JdbcTemplate和具名参数namedParameterJdbcTemplate来进行批量操作。
改造前改造前
在开始讲解之前,我们首先来看下之前的JPA是如何批量操作的。
实体类User:
public class AppStudent {
private Integer id;
private Integer classId;
private String name;
private Integer age;
//伪代码、省略构造和get、set方法
}
DynamicQuery伪代码:
@Repository
public class DynamicQueryImpl implements DynamicQuery {
@PersistenceContext
private EntityManager em;
public EntityManager getEntityManager() {
return em;
}
//其实就是for循环、使用EntityManager的persist方法循环保存而已
@Override
public <T> void saveList(List<T> resultList) {
for (int i = 0; i < resultList.size(); i++) {
T t = resultList.get(i);
em.persist(t);
}
}
}
改造后改造后
JdbcTemplate
JdbcTemplate提供的主要方法:
1. execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句;
2. update方法及batchUpdate方法:update方法用于执行新增、修改、删除等语句;batchUpdate方法用于执行批处理相关
语句;
3. query方法及queryForXXX方法:用于执行查询相关语句;
4. call方法:用于执行存储过程、函数相关语句。
我们只需要在使用jdbcTemplate类中使用@Autowired进行注入即可:
@Autowired
private JdbcTemplate jdbcTemplate;
批量插入操作:
public void batchSave(){
List<Object[]> batchArgs=new ArrayList<Object[]>();
batchArgs.add(new Object[]{1,"小明",21});
batchArgs.add(new Object[]{2,"小红",22});
batchArgs.add(new Object[]{3,"露西",23});
String sql = "insert into user (username,password) values (?,?)";
jdbcTemplate.batchUpdate(sql, batchArgs);
}
评论0