MyBatisPlus如何实现分页时排序
发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,这篇文章将为大家详细讲解有关MyBatisPlus如何实现分页时排序,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。简介说明本文用示例介绍MyBtisPlus分页时排
千家信息网最后更新 2025年02月02日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 IPagedefaultOrder(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安全错误
数据库的锁怎样保障安全
数据库插入语句每100条
广东服务器电源厂商哪家好
网络安全 v2ex
u8存货核算表数据库
怎么架设小的服务器
新宜农网络技术有限公司
服务器系统不释放内存
计算机网络技术薪资走向
查数据库表信息
csgo体验皮肤的服务器代码
sql 关闭数据库
软件开发管理岗位属于什么职类
审计署网络安全责任制实施办法
信息网络安全评估的办法是
苏州服务器连接线
华为云服务器登录失败
超市数据库软件
软件开发方法的目标是什么
天津市河东网络安全保卫总队
网络安全宣传幼儿园展板
戴尔服务器更换静音风扇
毁灭战士4 亚洲服务器
公司网络技术方案
php查数据库
租赁平台软件开发
天津手机软件开发价格
石家庄联通软件开发有限公司
软件开发小样
关闭服务器代理
国家网络安全宣