MySQL 按照数据库表字段动态排序 查询列表信息

岁酱吖の 提交于 2019-11-27 10:43:12

MySQL 按照数据库表字段动态排序 查询列表信息


 

背景描述

项目中数据列表分页展示的时候,前端使用的Table组件,每列自带对当前页的数据进行升序或者降序的排序。

但是客户期望点击每列的时候,对查询到的所有数据进行排序。

 

举例说明:

 

查询到的有100条数据,每页10条,共10页。前端Table组件,可以对当前页的10条数据,进行排序,其他的9页并不参与排序。

但是,实际期望是对查询到的10页数据均参与排序。并且不是特定列,而是每列均可以按照升序或者降序,将查询到的结果进行再次排序。


 

处理方式

由于前端技术的限制,需要在后端进行处理,对查询列表的接口进行修改。

1、修改查询实体类

首先需要在查询条件的请求实体中,增加两个字段 orderField orderType,用于保存传入字段名和排序的方式(升序ASC,降序DESC)

orderField:用于接收需要排序的字段

orderType:用于接收排序的方式,ASC,DESC,asc,desc

代码如下:

    // 对字段进行排序
    private String orderField;    // 存放排序字段
    private String orderType;     // ASC DESC

    public String getOrderField() {
        return orderField;
    }

    public void setOrderField(String orderField) {
        this.orderField = orderField;
    }

    public String getOrderType() {
        return orderType;
    }

    public void setOrderType(String orderType) {
        this.orderType = orderType;
    }

 

2、修改 mapper.xml 文件

找到MyBatis的Mapper文件中,在查询列表方法的SQL。

增加如下代码:

<if test="orderField != null and orderField != '' and orderType != null and orderType != ''">
  ORDER BY ${orderField} ${orderType} 
</if>

 

3、增加接口调用字段

在传参时,增加 orderField 和 orderType ,效果如下

{
    "pageNum":1,
    "pageSize":5,
    "orderField":"create_time",
    "orderType":"desc"
}

 

 

至此,按照传入的字段名和排序方式进行排序的功能就实现了。

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!