Springboot多字段排序

问题遇到的现象和发生背景

img

需求是每次只能单个字段升降序排序,也就是order by #{column} #{direction}后面的两个参数都是可变的。现在的实现方法就是前端写死这几个字段名的标识(类似1-学习进度,2-观看数量)和排序(1-升,0-降),用户点了啥传啥标识过来,然后我后端根据这个去enum里找对应的字段名,再传入sql里进行查询。

不知道还有没有更好的实现方法?

这种动态字段排序只能如此,如果你后端不通过前端传的标识来判断出是哪个字段排序,就只能前端来做了,总有一端处理
比如前端传orderByCloumn:1,direction:1,那你后端就要根据这两个的值来定位到是哪个字段升降序,
还可以前端在点击排序时,你和前端约定好是哪个字段,让前端直接把字段名和方向都传给,你直接取值放到sql就行

单字段排序还好,一般就用你这方法,2个参数,一个代表排序字段,一个代表升降序;

1、本表多字段排序分页
2、引用其他表的多字段排序分页,用hql来实现
或看看
https://blog.csdn.net/Serendipity_77/article/details/111219916
请采纳

你用什么框架,表结构是什么,查询语句是什么,代码怎么写的

1.首先导包
import org.springframework.data.domain.Sort.Order;这个包下面的。
2.然后建立三个order
例:
List<Sort.Order> orders = new ArrayList<Sort.Order>();
orders.add(new Sort.Order(Sort.Direction.ASC,"topicsname"));
orders.add(new Sort.Order(Sort.Direction.DESC,"signstate"));
orders.add(new Sort.Order(Sort.Direction.DESC,"id"));
3.最后使用
Sort sort = new Sort(orders);
在方法中使用:
例:
meetTopicsFileDao.findDistinctByPersonid(personId,sort);

这个好说啊 ,你可以用mybatis的SQL构建器 或者使用Eleementui的table实现多字段单独排序 如有帮助望采纳

如果是当前页数据排序可以在前端做,只对一页数据排序前端就可以实现了。如果是所有数据排序那只能在数据库了,除非你把所有数据都缓存起来,但这样有点得不偿失。所以你现有的方案已经是挺不错的方案了。

如果是当前页数据排序可以在前端做,只对一页数据排序前端就可以实现了。如果是所有数据排序那只能在数据库了,除非你把所有数据都缓存起来,但这样有点得不偿失。所以你现有的方案已经是挺不错的方案了。

这个实现大概只能是这样,顶多加一点性能上的改进

如果是当前页数据排序可以在前端做,只对一页数据排序前端就可以实现了。如果是所有数据排序那只能在数据库了,除非你把所有数据都缓存起来,但这样有点得不偿失。所以你现有的方案已经是挺不错的方案了。

你这方案就挺好的了,如果可以,你这5块钱给我吧,谢谢采纳,蟹蟹