mybatisplus分页查询原理,mybatisplus排序方法

  mybatisplus分页查询原理,mybatisplus排序方法

  

目录

简介建库建表依赖配置代码EntityServiceController测试

 

  

简介

说明

 

  本文用示例介绍MyBtisPlus分页时排序的方法。

  分页时排序的方法

  后端订单明细排序后端包装材料排序前端指定排序排序涉及到的类

  排序涉及到页类的ListOrderItem订单;成员,订单项定义如下:

  公共类订单明细实现serializable { private static final long serialVersionUID=1L;//需要进行排序的字段私有字符串列;//是否正序排列,默认真私有布尔asc=真.}

  

建库建表

如果存在mp,删除数据库;创建数据库国会议员默认字符集utf8使用MP;如果存在" t _用户",则删除表;设置名称utf8mb4创建表` t _ user `(` id ` BIGINT(0)NOT NULL AUTO _ INCREMENT,` user _ name ` VARCHAR(64)NOT NULL COMMENT 用户名(不能重复), nick _ name VARCHAR(64)空注释昵称(可以重复), email` VARCHAR(64) COMMENT 邮箱, create _ time DATETIME(0)NULL默认当前时间戳注释创建时间,` UPDATE _ time ` DATETIME(0)NULL更新当前时间戳注释上的默认当前时间戳修改时间, deleted _ flag BIGINT(0)不为空默认0注释 0:未删除其他:已删除,使用索引的存储类型目前只有两种的主键(` id `),唯一键` index _ user _ name _ deleted_flag `(` user _ name `,` deleted _ flag `),键` index _ create _ time `(` create _ time `))ENGINE=InnoDB COMMENT=用户;插入 t _用户值(1,刀,刀刃、abc@qq.com、2021-01-23 093:33:36、2021-01-23 09:36、0);插入 t _用户值(2,“天空”天蓝、123@qq.com、2021-01-24 18:12:21、2021-01-24 18:12:21、0);执行后的结果:

 

  

依赖

pom.xml

 

  ?可扩展标记语言版本=1.0 编码=UTF八号?项目xmlns= http://maven。阿帕奇。org/POM/4。0 .0 xmlns : xsi= http://www。w3。org/2001/XML schema-instance xsi :架构位置= http://maven。阿帕奇。org/POM/4。0 .0 https://maven.apache.org/xsd/maven-4.0.0.xsd模型版本4 .0 .0/模型版本父groupIdorg.springframework.boot/groupId artifactId spring-boot-starter-parent/artifactId版本2.3

  .RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.example</groupId> <artifactId>MyBatis-Plus_Simple</artifactId> <version>0.0.1-SNAPSHOT</version> <name>MyBatis-Plus_Simple</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.1</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-spring-boot-starter</artifactId> <version>3.0.3</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>

 

  

配置

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<User> {}

实现

 

  

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 ServiceImpl<UserMapper, User> implements 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<User> defaultOrder(Page<User> page) { return userService.page(page); } @ApiOperation("通过orderItems") @GetMapping("orderItems") public IPage<User> orderItems(Page<User> 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<User> wrapper(Page<User> page) { LambdaQueryWrapper<User> queryWrapper = Wrappers.<User>lambdaQuery(); // 按create_time排序,若create_time相同,则按id排序 queryWrapper.orderByDesc(User::getCreateTime); queryWrapper.orderByAsc(User::getId); return userService.page(page, queryWrapper); } @ApiOperation("前端指定顺序") @GetMapping("byFrontEnd") public IPage<User> byFrontEnd(Page<User> 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分页时排序的实现的文章就介绍到这了,更多相关MyBatisPlus分页排序内容请搜索盛行IT以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: