请教各位,如何批量插入
这是前端传来的数据
普通for循环插入
public void testInsertBatch2() throws Exception {
User user;
SqlSession sqlSession = sqlSessionTemplate.getSqlSessionFactory().openSession(false);
UserDao mapper = sqlSession.getMapper(UserDao.class);
for (int i = 0; i < 500; i++) {
user = new User();
user.setId("test" + i);
user.setName("name" + i);
user.setDelFlag("0");
mapper.insert(user);
}
sqlSession.commit();
}
<insert id="insert">
INSERT INTO t_user (id, name, del_flag)
VALUES(#{id}, #{name}, #{delFlag})
</insert>
事务BATCH模式插入
@Test
public void testInsertBatch2() throws Exception {
User user;
SqlSession sqlSession = sqlSessionTemplate.getSqlSessionFactory().openSession(ExecutorType.BATCH, false);
UserDao mapper = sqlSession.getMapper(UserDao.class);
for (int i = 0; i < 500; i++) {
user = new User();
user.setId("test" + i);
user.setName("name" + i);
user.setDelFlag("0");
mapper.insert(user);
}
sqlSession.commit();
}
<insert id="insert">
INSERT INTO t_user (id, name, del_flag)
VALUES(#{id}, #{name}, #{delFlag})
</insert>
foreach方式插入
@Test
public void testInsertBatch() throws Exception {
List<User> list = new ArrayList<>();
User user;
for (int i = 0; i < 10000; i++) {
user = new User();
user.setId("test" + i);
user.setName("name" + i);
user.setDelFlag("0");
list.add(user);
}
userService.insertBatch(list);
}
<insert id="insertBatch">
INSERT INTO t_user
(id, name, del_flag)
VALUES
<foreach collection ="list" item="user" separator =",">
(#{user.id}, #{user.name}, #{user.delFlag})
</foreach >
</insert>
【相关推荐】
@Override
public ReturnMsg checkOnlineBookout(Map<String, Object> param) {
log.info("复核线上租书单:{}",param);
Map<String, String> params = new HashMap<>();
params.put("frm_name", "线上租书");
params.put("dh", param.get("dh").toString());
params.put("user_code", "9999");
params.put("user_name", "线上租书");
params.put("bm_name", param.get("bm_name").toString());
params.put("corp_name", "");
params.put("msginfo", "");
// 调用存储过程
bookOutTitleDao.checkOnlinebookout(params);
return new ReturnMsg().setData(params.get("msginfo"));
}