工作中遇到批量插入就要写配置文件,终于给我写烦了,希望能通过注解的形式来进行操作
批量插入:注意separator=’,'是逗号而不是分号 open和close属性都为空,在这我没写这两个属性
@Insert("<script>" + "insert into mission_file_device VALUES "
+ "<foreach collection='list' item='item' index='index' separator=','> "
+ "(#{mission_id},#{file_id},#{item.device_id},NULL,NULL,NULL,NULL,NULL) " + "</foreach>" + "</script>")
int insertInfo(@Param("mission_id") Integer mission_id, @Param("file_id") Integer file_id,
@Param("list") List<DeviceParam> device);
批量更新:注意separator=’,'是分号而不是逗号 open和close属性都为空,在这我没写这两个属性,而且还要在你的数据库配置文件添加这一属性为allowMultiQueries=true
MySQL连接数据库时,添加语句:“allowMultiQueries=true”的作用:
1.可以在sql语句后携带分号,实现多语句执行。
2.可以执行批处理,同时发出多个SQL语句
3.经过测试批量插入不需要此参数,批量更新必须配置此参数
@Update("<script>" + "<foreach collection='list' item='item' index='index' separator=';'> "
+ "update device_info set device_missionStatus= 0 where device_id = #{item.device_id} " + "</foreach>"
+ "</script>")
int updateFileBoxStatus(List<DeviceParam> device);
批量删除
<delete id="delUserForeach">
delete from t_user where uid in
<foreach collection="list" item="uid" open="(" close=")" separator="," >
#{uid}
</foreach>
</delete>