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); }
url="jdbc:mysql://localhost:3306/dechnic_control?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true"/>