引言:更多相关请看 Java其它
JSON请求案例
[
{"id":1,"sort":11},
{"id":2,"sort":6},
{"id":3,"sort":4},
{"id":4,"sort":7},
{"id":5,"sort":6},
{"id":6,"sort":4},
{"id":7,"sort":9}
]
Controller类
public Result updateBatch(@RequestBody List<CNoticeParam> list) {
log.info("传入:{}", list);
if (list == null || list.size() == 0) {
return Result.error("必须传入值List");
}
for (CNoticeParam param : list) {
if (param == null || param.getId() == null || param.getSort() == null) {
return Result.error("公告id或排序值不能为空");
}
if (param.getSort() <= 0) {
return Result.error("排序值不能<=0");
}
}
boolean b = this.cNoticeService.updateBatch(list);
if (!b) {
return Result.error("增删改操作失败");
}
return Result.ok();
}
service类
/**
* 批量更新
*
* @param list
* @return
*/
boolean updateBatch(List<CNoticeParam> list);
service实现类
@Override
public boolean updateBatch(List<CNoticeParam> list) {
return this.cNoticeMapper.updateBatch(list);
}
Mapper类
/**
* 批量更新
*
* @param list
* @return
*/
boolean updateBatch(List<CNoticeParam> list);
mapper.xml
<!-- 批量更新 -->
<update id="updateBatch" parameterType="java.util.List">
UPDATE c_notice
SET sort = CASE id
<foreach collection="list" item="item" index="index" open="" separator="" close="">
WHEN #{item.id} THEN #{item.sort}
</foreach>
END
WHERE
id in
<foreach collection="list" item="item" index="index" open="(" separator="," close=")">
#{item.id}
</foreach>
</update>
Param类
/**
* <p>
* 公告信息表
* </p>
*
* @author sire
* @since 2020-04-27
*/
@Data
public class CNoticeParam extends BaseParam implements Serializable, BaseValidatingParam {
private static final long serialVersionUID = 1L;
/**
* 公告id
*/
private Integer id;
/**
* 中文标题,如果是普通公告此字段才有值
*/
private String zhtitle;
/**
* 英文标题,如果是普通公告此字段才有值
*/
private String entitle;
/**
* 印尼文标题,如果是普通公告此字段才有值
*/
private String idtitle;
/**
* 中文公告URL
*/
private String zhurl;
/**
* 英文公告URL
*/
private String enurl;
/**
* 印尼文公告URL
*/
private String idurl;
/**
* 是否为Banner,0不是banner,1是banner记录
*/
private Integer isbanner;
/**
* 排序
*/
private Integer sort;
/**
* 是否开启,0关闭,1开启
*/
private Integer isstart;
/**
* 开启时间,必须大于开启时间才能展示
*/
private Long starttime;
/**
* 备注
*/
private String remark;
/**
* 更新者
*/
private String updateby;
/**
* 更新时间
*/
private Long updatetime;
/**
* 创建者
*/
private String createby;
/**
* 创建时间
*/
private Long createtime;
@Override
public String checkParam() {
return null;
}
}
数据库建表语句
CREATE TABLE `c_notice` (
`ID` int(50) NOT NULL AUTO_INCREMENT COMMENT '公告id',
`ZHTITLE` varchar(120) DEFAULT NULL COMMENT '中文标题',
`ENTITLE` varchar(120) DEFAULT NULL COMMENT '英文标题',
`IDTITLE` varchar(120) DEFAULT NULL COMMENT '印尼文标题',
`ZHURL` varchar(600) DEFAULT NULL COMMENT '中文公告URL',
`ENURL` varchar(600) DEFAULT NULL COMMENT '英文公告URL',
`IDURL` varchar(600) DEFAULT NULL COMMENT '印尼文公告URL',
`ISBANNER` tinyint(2) DEFAULT NULL COMMENT '是否为Banner,0不是banner,1是banner记录',
`SORT` int(50) DEFAULT NULL COMMENT '排序',
`ISSTART` tinyint(2) DEFAULT NULL COMMENT '是否开启,0关闭,1开启',
`STARTTIME` bigint(20) DEFAULT NULL COMMENT '开启时间,必须大于开启时间才能展示',
`REMARK` varchar(200) DEFAULT NULL COMMENT '备注',
`UPDATEBY` varchar(20) DEFAULT NULL COMMENT '更新者',
`UPDATETIME` bigint(20) NOT NULL COMMENT '更新时间',
`CREATEBY` varchar(20) DEFAULT NULL COMMENT '创建者',
`CREATETIME` bigint(20) NOT NULL COMMENT '创建时间',
PRIMARY KEY (`ID`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='公告信息表';
运行控制台打印SQL语句日志
==> Preparing: UPDATE c_notice SET sort = CASE id WHEN ? THEN ? WHEN ? THEN ? WHEN ? THEN ? WHEN ? THEN ? WHEN ? THEN ? WHEN ? THEN ? WHEN ? THEN ? END WHERE id in ( ? , ? , ? , ? , ? , ? , ? )
==> Parameters: 1(Integer), 1(Integer), 2(Integer), 6(Integer), 3(Integer), 4(Integer), 4(Integer), 7(Integer), 5(Integer), 6(Integer), 6(Integer), 4(Integer), 7(Integer), 9(Integer), 1(Integer), 2(Integer), 3(Integer), 4(Integer), 5(Integer), 6(Integer), 7(Integer)
<== Updates: 7