通过foreach动态拼装SQL语句

示例:

<insert id="insertForeach4Batch" useGeneratedKeys="true"   keyProperty="id">
insert into t_user (user_name, real_name,
sex, mobile,email,note,
position_id)
values
<foreach collection="list" separator="," item="user">
(
#{user.userName,jdbcType=VARCHAR},
#{user.realName,jdbcType=VARCHAR},
#{user.sex,jdbcType=TINYINT},
#{user.mobile,jdbcType=VARCHAR},
#{user.email,jdbcType=VARCHAR},
#{user.note,jdbcType=VARCHAR},
#{user.position.id,jdbcType=INTEGER}
)
</foreach>

</insert>

使用BATCH类型的excutor

SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, true);

代码示例:

@Test
// 批量更新
public void testBatchExcutor() {
// 2.获取sqlSession
// SqlSession sqlSession = sqlSessionFactory.openSession(true);
SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH, true);
// 3.获取对应mapper
TUserMapper mapper = sqlSession.getMapper(TUserMapper.class);

TUser user = new TUser();
user.setUserName("mark");
user.setRealName("毛毛");
user.setEmail(
user.setMobile
user.setNote("mark's note");
user.setSex((byte) 1);
TPosition positon1 = new TPosition();
positon1.setId(1);
user.setPosition(positon1);
System.out.println(mapper.insertSelective(user));

TUser user1 = new TUser();
// user1.setId(3);
user1.setUserName("cindy");
user1.setRealName("sss");
user1.setEmail("xxoo@163.com");
user1.setMobile("18695982222");
user1.setNote("cindy's note");
user1.setSex((byte) 2);
user.setPosition(positon1);
System.out.println(mapper.updateIfAndSetOper(user1));

sqlSession.commit();
System.out.println("----------------");

}