在Java代码种频繁调用sql进行处理数据是比较费时间的。
那么对于插入这种我们可用mybatis的批量插入进行insert数据 而不是循环一次调一次insert
写法:
mapper:
Integer createPlanByListEntity(List<Entity> list);
xml:parameterType就是传入的list<实体>
<insert id="自己定义的id名" parameterType="java.util.List" > insert into 表名 ( id, STATUS,CREATE_USER_NAME,CREATE_USER_ID,CREATE_TIME ) values <foreach item="item" collection="list" index="index" separator=","> (#{item.id},#{item.status},#{item.whsCompanyId},#{item.whsCode},#{item.whsName},#{item.appointmentType},#{item.startTime},#{item.endTime}, #{item.intervalTimeUnit},#{item.intervalTime},#{item.appointmentDay},#{item.appointmentStockType},#{item.appointmentUnit}, #{item.appointmentWeight},#{item.createUserName},#{item.createUserId},#{item.createTime} ) </foreach> </insert>
批量修改写成
update 表名 set status =1 where id =1;
update 表名 set status =2 where id =2;
这种格式就是分号隔开的多个update
代码 只贴xml 了
<update id="自己起个" parameterType="java.util.List"> <foreach collection="list" item="item" separator=";"> update 表名 <set> <if test="item.updateUserName != null and item.updateUserName != ''"> UPDATE_USER_NAME = #{item.updateUserName}, </if> <if test="item.updateUserId != null and item.updateUserId != ''"> UPDATE_USER_ID = #{item.updateUserId}, </if> <if test="item.updateTime != null "> UPDATE_TIME = #{item.updateTime} </if> </set> where id = #{item.id} </foreach> </update>
注意批量update需要设置数据库的连接加上这个:&allowMultiQueries=true 否则会报错