MP条件构造器之常用功能详解(orderBuAsc、orderByDesc、orderBy)

orderByAsc

orderByAsc 方法是 MyBatis-Plus 中用于构建查询条件的高级方法之一,它用于设置查询结果的升序排序条件。通过指定一个或多个字段,orderByAsc 方法可以生成 SQL 语句中的 ORDER BY 子句,并指定升序排序。

使用范围
  • QueryWrapper
  • LambdaQueryWrapper
  • UpdateWrapper
  • LambdaUpdateWrapper

方法签名
// 设置升序排序条件,使用字段名
orderByAsc(R... columns)
orderByAsc(boolean condition, R... columns)

参数说明
  • columns:一个可变参数列表,包含用于排序的字段名。
  • condition:一个布尔值,用于控制是否应用这个排序条件。

示例

假设我们有一个 Employee 表,其中包含字段 namesalary。我们希望根据 salary 对员工进行升序排序。

根据指定条件设置升序排序条件

普通 Wrapper (QueryWrapper):

// 创建 QueryWrapper 实例
QueryWrapper<Employee> queryWrapper = new QueryWrapper<>();
// 设置升序排序条件,按 salary 升序排序
queryWrapper.orderByAsc("salary");

// 执行查询,获取排序后的结果
List<Employee> employees = employeeMapper.selectList(queryWrapper);

Lambda Wrapper (LambdaQueryWrapper):

// 创建 LambdaQueryWrapper 实例
LambdaQueryWrapper<Employee> queryWrapper = new LambdaQueryWrapper<>();
// 设置升序排序条件,按 salary 升序排序
queryWrapper.orderByAsc(Employee::getSalary);

// 执行查询,获取排序后的结果
List<Employee> employees = employeeMapper.selectList(queryWrapper);

生成的 SQL 语句:

SELECT * FROM employee ORDER BY salary ASC;



动态根据条件设置升序排序条件

现在,我们希望根据动态条件来设置升序排序条件。例如,如果条件成立,则按 salary 升序排序。

普通 Wrapper (QueryWrapper):

// 动态设置排序条件
boolean shouldOrderBySalary = true; // 例如从外部条件中获得

// 创建 QueryWrapper 实例
QueryWrapper<Employee> queryWrapper = new QueryWrapper<>();
// 根据条件动态设置升序排序条件
queryWrapper.orderByAsc(shouldOrderBySalary, "salary");

// 执行查询,获取排序后的结果
List<Employee> employees = employeeMapper.selectList(queryWrapper);

Lambda Wrapper (LambdaQueryWrapper):

// 动态设置排序条件
boolean shouldOrderBySalary = true; // 例如从外部条件中获得

// 创建 LambdaQueryWrapper 实例
LambdaQueryWrapper<Employee> queryWrapper = new LambdaQueryWrapper<>();
// 根据条件动态设置升序排序条件
queryWrapper.orderByAsc(shouldOrderBySalary, Employee::getSalary);

// 执行查询,获取排序后的结果
List<Employee> employees = employeeMapper.selectList(queryWrapper);

如果 shouldOrderBySalarytrue,生成的 SQL 语句如下:

SELECT * FROM employee ORDER BY salary ASC;

如果 shouldOrderBySalaryfalse,生成的 SQL 语句如下:

SELECT * FROM employee;


orderByDesc

orderByDesc 方法是 MyBatis-Plus 中用于构建查询条件的高级方法之一,它用于设置查询结果的降序排序条件。通过指定一个或多个字段,orderByDesc 方法可以生成 SQL 语句中的 ORDER BY 子句,并指定降序排序。

使用范围
  • QueryWrapper
  • LambdaQueryWrapper
  • UpdateWrapper
  • LambdaUpdateWrapper

方法签名
// 设置降序排序条件,使用字段名
orderByDesc(R... columns)
orderByDesc(boolean condition, R... columns)

参数说明
  • columns:一个可变参数列表,包含用于排序的字段名。
  • condition:一个布尔值,用于控制是否应用这个排序条件。

示例

orderByAsc 基本一致,照葫芦画瓢。




orderBy

orderBy 方法是 MyBatis-Plus 中用于构建查询条件的高级方法之一,它用于设置查询结果的排序条件。通过指定一个或多个字段以及排序方向(升序或降序),orderBy 方法可以生成 SQL 语句中的 ORDER BY 子句。

使用范围
  • QueryWrapper
  • LambdaQueryWrapper
  • UpdateWrapper
  • LambdaUpdateWrapper

方法签名
// 设置排序条件,使用字段名和排序方向
orderBy(boolean condition, boolean isAsc, R... columns)

参数说明
  • condition:一个布尔值,用于控制是否应用这个排序条件。
  • isAsc:一个布尔值,表示排序方向。true 表示升序(ASC),false 表示降序(DESC)。
  • columns:一个可变参数列表,包含用于排序的字段名。

示例

假设我们有一个 Product 表,其中包含字段 nameprice。我们希望根据 price 对产品进行排序,并且可以选择升序或降序。

普通 Wrapper (QueryWrapper):

// 动态设置排序条件
boolean shouldOrderByPrice = true; // 例如从外部条件中获得
boolean isAsc = true; // 是否升序排序,true 为升序,false 为降序

// 创建 QueryWrapper 实例
QueryWrapper<Product> queryWrapper = new QueryWrapper<>();
// 根据条件动态设置排序条件,按 price 排序,指定排序方向
queryWrapper.orderBy(shouldOrderByPrice, isAsc, "price");

// 执行查询,获取排序后的结果
List<Product> products = productMapper.selectList(queryWrapper);

Lambda Wrapper (LambdaQueryWrapper):

// 动态设置排序条件
boolean shouldOrderByPrice = true; // 例如从外部条件中获得
boolean isAsc = true; // 是否升序排序,true 为升序,false 为降序

// 创建 LambdaQueryWrapper 实例
LambdaQueryWrapper<Product> queryWrapper = new LambdaQueryWrapper<>();
// 根据条件动态设置排序条件,按 price 排序,指定排序方向
queryWrapper.orderBy(shouldOrderByPrice, isAsc, Product::getPrice);

// 执行查询,获取排序后的结果
List<Product> products = productMapper.selectList(queryWrapper);

生成的 SQL 语句
如果 shouldOrderByPricetrueisAsctrue,生成的 SQL 语句如下:

SELECT * FROM product ORDER BY price ASC;

如果 shouldOrderByPricetrueisAscfalse,生成的 SQL 语句如下:

SELECT * FROM product ORDER BY price DESC;

如果 shouldOrderByPricefalse,无论 isAsc 的值如何,生成的 SQL 语句如下:

SELECT * FROM product;
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值