mybatis批量其实就是一个用mysql句柄拼sql的过程:
批量更新:
<update id="updateBatch" parameterType="java.util.List">
UPDATE test set
<foreach collection="list" item="item" index="index"
separator=" " open="FSEQ = CASE" close="end,">
WHEN FID = #{item.fid} then #{item.fseq,jdbcType=NUMERIC}
</foreach>
<foreach collection="list" item="item" index="index"
separator=" " open="FPARENTID = CASE" close="end,">
WHEN FID = #{item.fid} then #{item.fparentId,jdbcType=VARCHAR}
</foreach>
<foreach collection="list" item="item" index="index"
separator=" " open="CFPURORDERUNITID = CASE" close="end">
WHEN FID = #{item.fid} then #{item.cfpurOrderUnitId,jdbcType=NUMERIC}
</foreach>
WHERE FID IN (
<foreach collection="list" item="item" index="index"
separator=",">
#{item.fid}
</foreach>
)
</update>
批量查询:
<select id="queryByids" resultMap="BaseResultMap" parameterType="java.util.List">
select
fid,fseq,fparentId,cfpurOrderUnitId
from test
<where>
id in (
<foreach collection="list" item="item" index="index"
separator=",">
#{item.id}
</foreach>
);
</where>
</select>