注意:本教程使用的数据库脚本、数据模型和环境信息请参考 “MyBatis Plus环境准备” 章节,点击下载示例源码。
本章节将介绍怎样使用 orderByAsc、orderByDesc 和 orderBy 三个方法实现数据排序。它们定义分别如下:
orderByAsc(R... columns) orderByAsc(boolean condition, R... columns)
参数说明:
columns:列名称,可以指定多个
condition:用于指定当前这个条件是否有效;如果为 true,则应用当前条件;如果为 false,则忽略当前条件
实例:根据用户 ID 和 年龄递增排序。
QueryWrapper<UserBean> wrapper = new QueryWrapper<>(); wrapper.orderByAsc("user_id", "age");
orderByDesc(R... columns) orderByDesc(boolean condition, R... columns)
参数说明:
columns:列名称,可以指定多个
condition:用于指定当前这个条件是否有效;如果为 true,则应用当前条件;如果为 false,则忽略当前条件
实例:根据用户 ID 和 年龄递减排序。
QueryWrapper<UserBean> wrapper = new QueryWrapper<>(); wrapper.orderByDesc("user_id", "age");
orderBy(boolean condition, boolean isAsc, R... columns)
参数说明:
columns:列名称,可以指定多个
condition:用于指定当前这个条件是否有效;如果为 true,则应用当前条件;如果为 false,则忽略当前条件
isAsc:是否使用 ASC 排序,即递增排序;否则,则使用递减(DESC)排序
实例:根据用户 ID 和 年龄递减排序。
QueryWrapper<UserBean> wrapper = new QueryWrapper<>(); wrapper.orderBy(true, false, "user_id", "age");
package com.hxstrive.mybatis_plus.simple_mapper.condition; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.hxstrive.mybatis_plus.mapper.SimpleMapper; import com.hxstrive.mybatis_plus.model.UserBean; import org.junit.jupiter.api.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import java.util.List; @RunWith(SpringRunner.class) @SpringBootTest class Condition12Test { @Autowired private SimpleMapper simpleMapper; @Test void contextLoads() { QueryWrapper<UserBean> wrapper = new QueryWrapper<>(); wrapper.le("user_id", 10); wrapper.orderByAsc("user_id"); List<UserBean> userBeanList = simpleMapper.selectList(wrapper); for(UserBean userBean : userBeanList) { System.out.println(userBean); } wrapper = new QueryWrapper<>(); wrapper.le("user_id", 10); wrapper.orderByDesc("user_id"); userBeanList = simpleMapper.selectList(wrapper); for(UserBean userBean : userBeanList) { System.out.println(userBean); } } }
运行上面代码,实际上执行的是如下 SQL 语句:
Preparing: SELECT user_id,name,sex,age,face,salary,borthday FROM user WHERE (user_id <= ?) ORDER BY user_id ASC Parameters: 10(Integer) Preparing: SELECT user_id,name,sex,age,face,salary,borthday FROM user WHERE (user_id <= ?) ORDER BY user_id DESC Parameters: 10(Integer)
很不错
谢谢支持,我会努力的。