在進(jìn)行批量更新時(shí),如果需要基于字段名動(dòng)態(tài)更新數(shù)據(jù),可以使用 sql 中的 if 語句來判斷某個(gè)字段是否包含在指定的列表中。
根據(jù)給定的場(chǎng)景,我們假設(shè)使用的是 Java 中的 mybatis orm 框架,批量更新方法接受兩個(gè)參數(shù):
為了動(dòng)態(tài)更新 schoolno 和 schoolrank 字段,可以將 sql 語句編寫如下:
<update id="batchUpdateById"> <foreach collection="entityList" item="entity" index="index1" open="(" close=")" separator=";"> UPDATE school_info SET <if test='fieldNamesList.contains("schoolNo")'> schoolNo = #{entity.getSchoolNo} </if> <if test='fieldNamesList.contains("schoolRank")'> schoolRank = #{entity.getSchoolRank} </if> WHERE dataId = #{entity.dataId} </foreach> </update>
登錄后復(fù)制
在 if 語句中,fieldnameslist.contains(“schoolno”) 判斷指定的字段名列表是否包含 “schoolno”,如果包含,則更新該字段。同理,也可以判斷其他字段名并進(jìn)行相應(yīng)更新。
值得注意的是,在 mybatis 中需要使用 contains 方法來判斷列表中是否包含某個(gè)元素。