可一次修改数据库多条数据 foreach 的使用
xml语句
<update id="updateMltjb" parameterType="List" >
<foreach collection="list" index="index" item="data1" separator=";">
update dw_factgrossprofit set
<trim prefix="" suffixOverrides="," >
<if test="data1.item_sname != null">
item_sname = #{data1.item_sname},
</if>
<if test="data1.fact_a != null">
fact_a = #{data1.fact_a},
</if>
<if test="data1.fact_b != null">
fact_b = #{data1.fact_b},
</if>
<if test="data1.fact_c != null">
fact_c = #{data1.fact_c},
</if>
<if test="data1.fact_d != null">
fact_d = #{data1.fact_d},
</if>
<if test="data1.fact_e != null">
fact_e = #{data1.fact_e},
</if>
</trim>
where nid=#{data1.nid}
</foreach>
</update>
mapper
/**
* 改
*/
Integer updateMltjb(@Param("list")List<ExeclSupplementDto> dataList);
service
/**
* 改
*/
Integer updateMltjb(List<ExeclSupplementDto> execlSupplementDtos);
serviceImpl
@Override
public Integer updateMltjb(List<ExeclSupplementDto> execlSupplementDtos) {
if(Objects.nonNull(execlSupplementDtos) && !execlSupplementDtos.isEmpty()){
return execlSupplementMapper.updateMltjb(execlSupplementDtos);
}
return null;
}
Controller
@ResponseBody
@RequestMapping(value = "/updateMltjb", method = RequestMethod.POST)
@ApiOperation("统计表修改")
public Result updateMltjb (@RequestBody List<ExeclSupplementDto> execlSupplementDtos) {
List<ExeclSupplementDto> listDto = Lists.newArrayList();
try {
for(ExeclSupplementDto execlSupplementDto:execlSupplementDtos) {
listDto.add(execlSupplementDto);
Integer num = execlSupplementService.updateMltjb(listDto);
if (num == 0) {
execlSupplementService.insertMltjb(listDto);
}
listDto.clear();
}
return new Result(200, "请求成功");
} catch (Exception e) {
e.printStackTrace();
return new Result(0, "请求失败");
}
}