排序 order by

注意:本教程使用的数据库脚本、数据模型和环境信息请参考 “MyBatis Plus环境准备” 章节,点击下载示例源码

本章节将介绍怎样使用 orderByAsc、orderByDesc 和 orderBy 三个方法实现数据排序。它们定义分别如下:

orderByAsc(实现递增排序)

orderByAsc(R... columns)
orderByAsc(boolean condition, R... columns)

参数说明:

  • columns:列名称,可以指定多个

  • condition:用于指定当前这个条件是否有效;如果为 true,则应用当前条件;如果为 false,则忽略当前条件

实例:根据用户 ID 和 年龄递增排序。

QueryWrapper<UserBean> wrapper = new QueryWrapper<>();
wrapper.orderByAsc("user_id", "age");

orderByDesc(实现递减排序)

orderByDesc(R... columns)
orderByDesc(boolean condition, R... columns)

参数说明:

  • columns:列名称,可以指定多个

  • condition:用于指定当前这个条件是否有效;如果为 true,则应用当前条件;如果为 false,则忽略当前条件

实例:根据用户 ID 和 年龄递减排序。

QueryWrapper<UserBean> wrapper = new QueryWrapper<>();
wrapper.orderByDesc("user_id", "age");

orderBy(自定义排序方式)

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)

说说我的看法
全部评论(

很不错

回复:

谢谢支持,我会努力的。

关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号