mybatisplus排序固定字段
时间: 2025-02-08 22:47:19 浏览: 46
### 使用 MyBatis Plus 实现固定字段排序
在 MyBatis Plus 中,可以利用 `QueryWrapper` 或者链式调用的方式对指定字段进行排序。对于固定的单字段或多字段排序需求,可以通过设置默认的排序规则来简化操作。
#### 单字段排序示例
如果只需要基于单一字段进行升序或降序排列,则可以直接通过 `orderByAsc()` 和 `orderByDesc()` 方法完成:
```java
// 创建 QueryWrapper 对象并指定要查询的数据表实体类类型
QueryWrapper<GzhExamCertificate> wrapper = new QueryWrapper<>();
// 设置按 cerCode 字段降序排列
wrapper.orderByDesc(GzhExamCertificate::getCerCode);
// 执行查询并将结果存储到列表中
List<GzhExamCertificate> resultList = gzhExamCertificateMapper.selectList(wrapper);
```
此代码片段展示了如何创建一个 `QueryWrapper` 并对其应用简单的降序排序逻辑[^1]。
#### 多字段排序示例
当涉及到多个字段时,MyBatis Plus 提供了更加灵活的方式来处理这种情况。例如,在某些情况下可能希望先依据某个主要字段排序,而在该字段相等的情况下再考虑次要字段作为辅助排序标准。这可以通过传递一系列字段名给相应的排序方法实现:
```java
LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<>();
lqw.orderBy(true, false, User::getAField, User::getBField, User::getCField);
```
这里使用的是 `LambdaQueryWrapper` 来构建更安全易读的表达式树结构,并指定了三个用于排序的属性:首先是 aField 进行降序 (`false`) 排序;其次是 bField 及 cField 继续沿用相同的顺序方向继续排序[^2]。
另外一种方式是在动态条件下自定义 SQL 片段来进行复杂排序:
```java
if (StringUtils.isNotBlank(dto.getOrderByColumns())) {
String orderDirection = dto.getOrderByAsc() ? "asc" : "desc";
String mappedColumns = Util.getColumns(baseMapper.SORTCOLUMNMAP, dto.getOrderByColumns());
// 动态添加 ORDER BY 子句至 Wrapper
queryWrapper.last("order by " + mappedColumns + " " + orderDirection);
} else {
// 默认排序策略
queryWrapper.orderByDesc(GzhExamCertificate::getCerCode);
}
```
这段代码说明了如何根据传入参数决定最终使用的排序方案,同时也支持用户自定义排序列及其升降序状态。
阅读全文
相关推荐


















