使用mybatis進行批量更新

DAO:

/**
     * measures數據庫表的映射類
     * @author zx
     * @date 2018年2月2日 下午4:17:31
     * @param measures
     * @return
     */
    int updateMeasureDisplay(@Param("measures")List<Measure> measures);

mapper(xml文件)

<update id="updateMeasureDisplay" parameterType="Measure">
        update measure set DISPLAY =
        <foreach collection="measures" item="item" index="index"
            separator=" " open="case MEASURE_ID" close="end">
            when #{item.measureId} then #{item.display}
        </foreach>
        where MEASURE_ID in
        <foreach item="item" index="index" collection="measures" open="("
            separator="," close=")">
            #{item.measureId,jdbcType=VARCHAR}
        </foreach>
    </update>

根據MEASURE_ID去更新DISPLAY(多條更新);
轉換成SQL語句就是(假設兩條數據):
UPDATE measure
SET DISPLAY = CASE MEASURE_ID
WHEN MEASURE_ID1 THEN DISPLAY1
WHEN MEASURE_ID2 THEN DISPLAY2
END
WHERE
MEASURE_ID IN (MEASURE_ID1,MEASURE_ID2 )

使用的是sql中CASE…WHEN…THEN

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章