需求说明
最近有个需求:用户点击上下移动可以实现对数据自定义排序,每次移动一个位置。具体如下图所示:
实现思路
- 数据库表中添加一个order字段,默认设置为和主键一样的值,数据按照order降序排列
由于MySQL表只能有一个自增的键(已设置为主键自增),所以这里的实现是每次插入数据后获取主键id的值,然后更新order字段的值(设置为id字段的值)。 - 上移操作
取出上一条记录的排序号,将当前记录与上一条记录的排序号调换位置 - 下移操作
取出下一条记录的排序号,将当前记录与下一条记录的排序号调换位置
相关代码
公告分类表的脚本如下:
1 | CREATE TABLE `t_notice_type` ( |
AdjustOrderReq实体,用于接收前端请求入参,代码如下:
1 |
|
Controller请求方法代码如下:
1 |
|
服务实现方法代码如下:
1 |
|
MyBatis的XML映射文件代码如下:
1 | <!--根据主键更新排序号--> |
selectByPrimaryKey方法作用是根据主键查询,代码就不贴了。
若有更好的实现方案或者上续代码有任何问题,都欢迎交流!
参考链接