1. 程式人生 > >mybatis+mysql批量插入和批量更新

mybatis+mysql批量插入和批量更新

一、批量插入

批量插入資料使用的sql語句是:

insert into table (aa,bb,cc) 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() 的結果型別