MyBatis批量插入批量更新对象

批量插入对象

  • 批量插入数据,这种写法适用于mysql。通过foreach拼接出多条数据,可以避免循环调用单条插入sql产生的连接成本。
  • xxxDao.java
// 批量插入用户信息
int batchInsert(@Param("list") List<User> list);
  • xxxMapper.xml
<insert id="batchInsert" parameterType="java.util.List">
  	INSERT INTO user (user_Id, user_name, user_password) VALUES 
	<foreach collection="list" item="item" index="index" separator=",">
		(
			#{item.userId,jdbcType=VARCHAR}, 
			#{item.userNo,jdbcType=VARCHAR},
			#{item.userName,jdbcType=VARCHAR},
			#{item.userPassWord,jdbcType=VARCHAR}
		)
    foreach>
  insert>

批量更新对象

  • 批量更新对象,此种写法同样用于mysql,此种写法适用于更新的每个对象是不同的值。
  • 比如:需要将更新所有用户的编号以及密码初始化为身份证的后六位,这时我们在代码中将数据封装成User对象之后,通过批量以下xml即可。
  • xxxDao.java
// 批量更新用户信息
int batchUpdate(@Param("list") List<User> list);
  • xxxMapper.xml
<update id="batchUpdate" parameterType="java.util.List">
    UPDATE user SET 
    user_no =
    <foreach collection="list" item="item" separator=" " open="case id" close="end">
    WHEN #{item.id} THEN #{item.userNo}
    foreach>
    , user_password =
    <foreach collection="list" item="item" separator=" " open="case id" close="end">
    WHEN #{item.id} THEN #{item.userPassword}
    foreach>
    where id IN
    <foreach collection="list" item="item" separator="," open="(" close=")">
    #{item.id}
    foreach>
update>

最后

  • 如果在这里获得过启发和思考,希望点赞支持!对于内容有不同的看法欢迎来信交流。
  • 技术栈 >> java
  • 邮箱 >> [email protected]

你可能感兴趣的:(经验分享,java,mybatis,数据库)