mybatis批量更新數據

mybatis XML代碼

<!--批量增加場景設備信息-->
<update id="batchAddDevice" parameterType="List">
    <foreach collection="list" item="SceneDevice" separator=";" open="" close="" >
        update scene_device sd
        <set>
            sd.pattern = #{SceneDevice.pattern},
            <if test="SceneDevice.registerAddress != null and SceneDevice.registerAddress != ''">
                sd.registerAddress = #{SceneDevice.registerAddress},
            </if>
            sd.sceneId = #{SceneDevice.sceneId}
        </set>
        <where>
            <![CDATA[sd.id = #{SceneDevice.id}]]>
        </where>
    </foreach>
</update>
repo中的代碼

public void  batchAddDevice(@Param("list") List<SceneDevice> list);
java服務中的代碼

public void batchAddDevice(int sceneId, String list) {
    List<SceneDevice> sceneDevicesList = new ArrayList<>();
    Map deviceMap = new HashMap<>();
    Gson gson = new Gson();
    JSONArray jsonArray = JSONArray.fromObject(list);
    for(int i = 0;i < jsonArray.size(); i++){
        SceneDevice sceneDevice = new SceneDevice();
        String jsonString =  jsonArray.getString(i);
        deviceMap = gson.fromJson(jsonString, deviceMap.getClass());
        sceneDevice.setId(Integer.parseInt(deviceMap.get("id").toString()));
        sceneDevice.setSceneId(sceneId);
        sceneDevice.setDeviceId(Integer.parseInt(deviceMap.get("deviceId").toString()));
        sceneDevice.setPattern(deviceMap.get("pattern").toString());
        sceneDevicesList.add(sceneDevice);
    }
    curdRepo.batchAddDevice(sceneDevicesList);
}


注意:批量更新tomcat可能會報類型錯誤,需要修改你tomcat的server.xml,在數據源中修改,如下

url="jdbc:mysql://localhost:3306/dechnic_control?useUnicode=true&amp;characterEncoding=utf8&amp;allowMultiQueries=true"/>

發佈了75 篇原創文章 · 獲贊 29 · 訪問量 21萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章