一、批量插入
批量插入數據使用的sql語句是:
insert into table (字段一,字段二,字段三) values(xx,xx,xx),(oo,oo,oo)
mybatis中mapper.xml的代碼如下:
<!-- 批量插入數據 --> <insert id="insertBatch" parameterType="java.util.List" useGeneratedKeys="true"> <selectKey resultType="long" keyProperty="id" order="AFTER"> SELECT LAST_INSERT_ID() </selectKey> insert into wd_solr (fayu_id, tablename, name,logo,description,section_no,look_count,favorite_count,create_uid,create_time,update_time,timestamp) values <foreach collection="list" item="wdSolr" index="index" separator=","> ( #{wdSolr.fayuId},#{wdSolr.tablename},#{wdSolr.name},#{wdSolr.logo}, #{wdSolr.description},#{wdSolr.sectionNo},#{wdSolr.lookCount},#{wdSolr.favoriteCount}, #{wdSolr.createUid},#{wdSolr.createTime},#{wdSolr.updateTime},#{wdSolr.timestamp} ) </foreach> </insert>
二、批量更新
批量更新數據使用的sql語句是:
UPDATE table SET aa = CASE id WHEN 1 THEN 'oo' WHEN 2 THEN 'pp' WHEN 3 THEN 'qq' END ,SET bb = CASE id WHEN 1 THEN 'xx' WHEN 2 THEN 'yy' WHEN 3 THEN 'zz' END WHERE id IN (1,2,3)
上面這一條mysql語句可以更新多條記錄,mybatis中mapper.xml的代碼如下:
<!-- 批量更新數據 --> <update id="updateBatch"> update wd_solr set name = <foreach collection="list" item="wdSolr" index="index" separator=" " open="case id" close="end"> when #{wdSolr.id} then #{wdSolr.name} </foreach> ,logo = <foreach collection="list" item="wdSolr" index="index" separator=" " open="case id" close="end"> when #{wdSolr.id} then #{wdSolr.logo} </foreach> ,timestamp = <foreach collection="list" item="wdSolr" index="index" separator=" " open="case id" close="end"> when #{wdSolr.id} then #{wdSolr.timestamp} </foreach> where id in <foreach collection="list" item="wdSolr" index="index" separator="," open="(" close=")"> #{wdSolr.id} </foreach> </update>
三、SELECT LAST_INSERT_ID() 的使用和注意事項
轉載自:https://blog.csdn.net/czd3355/article/details/71302441
總體解釋:將插入數據的主鍵返回到 user 對象中。
具體解釋:
SELECT LAST_INSERT_ID():得到剛 insert 進去記錄的主鍵值,只適用與自增主鍵
keyProperty:將查詢到主鍵值設置到 parameterType 指定的對象的那個屬性
order:SELECT LAST_INSERT_ID() 執行順序,相對於 insert 語句來說它的執行順序
resultType:指定 SELECTLAST_INSERT_ID() 的結果類型