MyBatisPlus如何实现分页时排序
发表于:2025-11-13 作者:千家信息网编辑
千家信息网最后更新 2025年11月13日,这篇文章将为大家详细讲解有关MyBatisPlus如何实现分页时排序,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。简介说明本文用示例介绍MyBtisPlus分页时排
千家信息网最后更新 2025年11月13日MyBatisPlus如何实现分页时排序
这篇文章将为大家详细讲解有关MyBatisPlus如何实现分页时排序,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
简介
说明
本文用示例介绍MyBtisPlus分页时排序的方法。
分页时排序的方法
后端OrderItems排序
后端Wrapper排序
前端指定排序
排序涉及到的类
排序涉及到Page类的List
public class OrderItem implements Serializable { private static final long serialVersionUID = 1L; //需要进行排序的字段 private String column; // 是否正序排列,默认 true private boolean asc = true; ...}建库建表
DROP DATABASE IF EXISTS mp;CREATE DATABASE mp DEFAULT CHARACTER SET utf8;USE mp; DROP TABLE IF EXISTS `t_user`;SET NAMES utf8mb4; CREATE TABLE `t_user`( `id` BIGINT(0) NOT NULL AUTO_INCREMENT, `user_name` VARCHAR(64) NOT NULL COMMENT '用户名(不能重复)', `nick_name` VARCHAR(64) NULL COMMENT '昵称(可以重复)', `email` VARCHAR(64) COMMENT '邮箱', `create_time` DATETIME(0) NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` DATETIME(0) NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', `deleted_flag` BIGINT(0) NOT NULL DEFAULT 0 COMMENT '0:未删除 其他:已删除', PRIMARY KEY (`id`) USING BTREE, UNIQUE KEY `index_user_name_deleted_flag` (`user_name`, `deleted_flag`), KEY `index_create_time`(`create_time`)) ENGINE = InnoDB COMMENT = '用户'; INSERT INTO `t_user` VALUES (1, 'knife', '刀刃', 'abc@qq.com', '2021-01-23 09:33:36', '2021-01-23 09:33:36', 0);INSERT INTO `t_user` VALUES (2, 'sky', '天蓝', '123@qq.com', '2021-01-24 18:12:21', '2021-01-24 18:12:21', 0);
执行后的结果:

依赖
pom.xml
4.0.0 org.springframework.boot spring-boot-starter-parent 2.3.12.RELEASE com.example MyBatis-Plus_Simple 0.0.1-SNAPSHOT MyBatis-Plus_Simple Demo project for Spring Boot 1.8 org.springframework.boot spring-boot-starter-web com.baomidou mybatis-plus-boot-starter 3.5.1 org.springframework.boot spring-boot-starter-test test mysql mysql-connector-java org.projectlombok lombok com.github.xiaoymin knife4j-spring-boot-starter 3.0.3 org.springframework.boot spring-boot-maven-plugin
配置
application.yml
spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/mp?characterEncoding=UTF-8&serverTimezone=Asia/Shanghai username: root password: 222333 #mybatis-plus配置控制台打印完整带参数SQL语句mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
分页插件的配置(必须)
package com.example.demo.config; import com.baomidou.mybatisplus.annotation.DbType;import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; @Configurationpublic class MyBatisPlusConfig { /** * 分页插件 */ @Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); return interceptor; }}代码
Entity
package com.example.demo.user.entity; import com.baomidou.mybatisplus.annotation.IdType;import com.baomidou.mybatisplus.annotation.TableId;import com.baomidou.mybatisplus.annotation.TableLogic;import com.baomidou.mybatisplus.annotation.TableName;import com.baomidou.mybatisplus.extension.activerecord.Model;import lombok.Data; import java.time.LocalDateTime; @Data@TableName(value = "t_user")public class User { @TableId(value = "id", type = IdType.AUTO) private Long id; /** * 用户名(不能重复) */ private String userName; /** * 昵称(可以重复) */ private String nickName; /** * 邮箱 */ private String email; /** * 创建时间 */ private LocalDateTime createTime; /** * 修改时间 */ private LocalDateTime updateTime; /** * 0:未删除 其他:已删除 */ @TableLogic(delval = "id") private Long deletedFlag;}Service
接口
package com.example.demo.user.service; import com.baomidou.mybatisplus.extension.service.IService;import com.example.demo.user.entity.User; public interface UserService extends IService{}
实现
package com.example.demo.user.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;import com.example.demo.user.entity.User;import com.example.demo.user.mapper.UserMapper;import com.example.demo.user.service.UserService;import org.springframework.stereotype.Service; @Servicepublic class UserServiceImpl extends ServiceImplimplements UserService {}
Controller
package com.example.demo.user.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;import com.baomidou.mybatisplus.core.metadata.IPage;import com.baomidou.mybatisplus.core.metadata.OrderItem;import com.baomidou.mybatisplus.core.toolkit.Wrappers;import com.baomidou.mybatisplus.extension.plugins.pagination.Page;import com.example.demo.user.entity.User;import com.example.demo.user.service.UserService;import io.swagger.annotations.Api;import io.swagger.annotations.ApiOperation;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController; import java.util.List; @Api(tags = "排序")@RestController@RequestMapping("sort")public class SortController { @Autowired private UserService userService; @ApiOperation("默认顺序") @GetMapping("defaultOrder") public IPage defaultOrder(Page page) { return userService.page(page); } @ApiOperation("通过orderItems") @GetMapping("orderItems") public IPage orderItems(Page page) { page.addOrder(OrderItem.desc("create_time")); // 可以指定多列。比如下边这个:按create_time排序,若create_time相同,则按id排序 // page.addOrder(OrderItem.desc("create_time"), OrderItem.asc("id")); return userService.page(page); } @ApiOperation("通过wrapper") @GetMapping("wrapper") public IPage wrapper(Page page) { LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(); // 按create_time排序,若create_time相同,则按id排序 queryWrapper.orderByDesc(User::getCreateTime); queryWrapper.orderByAsc(User::getId); return userService.page(page, queryWrapper); } @ApiOperation("前端指定顺序") @GetMapping("byFrontEnd") public IPage byFrontEnd(Page page) { return userService.page(page); }} 测试
访问Knife4j页面:http://localhost:8080/doc.html

1.不指定顺序
本处前端不传任何参数进行的测试。
2.后端OrderItem排序(create_time倒序)
本处前端不传任何参数进行的测试。
3.后端Wrapper排序(create_time倒序,id升序)
本处前端不传任何参数进行的测试。
4.前端指定排序(create_time倒序)
前端指定orders[0].asc和orders[0].column
结果:
关于"MyBatisPlus如何实现分页时排序"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
排序
前端
参数
时间
测试
倒序
用户
篇文章
顺序
配置
相同
插件
方法
昵称
更多
用户名
结果
邮箱
不错
实用
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
从数据库取出的汉子乱码
软件开发监理工作的重点
电脑主机创建服务器
怎么看用友数据库版本
arcgis导数据库
ptcheck数据库
2018年国家网络安全的
数据库管理软件和生产报表系统
iatools自控软件开发
深圳市宝的软件开发有限公司
ps5重构数据库是格式化嘛
泰州手机软件开发中心
excel数据库统计
多媒体数据库技术论文
计算机网络技术学院风包包
广州棒谷网络技术有限公司
ibm服务器u盘一直转圈进不去
军工网络安全个股
我的世界1.14服务器离线登录
河北活动网络安全知识答题答案
全国网络安全员颁奖
数据库中drop使用方法
apple软件开发投入多少钱
网络安全大讲堂活动图
accsee数据库
数据库仓库和数据库的区别不包括
万方数据库找期刊
安卓版数据库管理器
服务器远程管理ipmi
大话西游外传怎么连接不上服务器