MyBatis-Plus分頁(yè)時(shí)排序的實(shí)現(xiàn)方法
簡(jiǎn)介
說(shuō)明
本文用示例介紹MyBtisPlus分頁(yè)時(shí)排序的方法。
分頁(yè)時(shí)排序的方法
- 后端OrderItems排序
- 后端Wrapper排序
- 前端指定排序
排序涉及到的類
排序涉及到Page類的List<OrderItem> orders;成員,OrderItem定義如下:
public class OrderItem implements Serializable { private static final long serialVersionUID = 1L; //需要進(jìn)行排序的字段 private String column; // 是否正序排列,默認(rèn) true private boolean asc = true; ... }
建庫(kù)建表
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 '用戶名(不能重復(fù))', `nick_name` VARCHAR(64) NULL COMMENT '昵稱(可以重復(fù))', `email` VARCHAR(64) COMMENT '郵箱', `create_time` DATETIME(0) NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創(chuàng)建時(shí)間', `update_time` DATETIME(0) NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改時(shí)間', `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', '天藍(lán)', '123@qq.com', '2021-01-24 18:12:21', '2021-01-24 18:12:21', 0);
執(zhí)行后的結(jié)果:
依賴
pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.12.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> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.1</version> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-spring-boot-starter</artifactId> <version>3.0.3</version> </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配置控制臺(tái)打印完整帶參數(shù)SQL語(yǔ)句 mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
分頁(yè)插件的配置(必須)
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; @Configuration public class MyBatisPlusConfig { /** * 分頁(yè)插件 */ @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; /** * 用戶名(不能重復(fù)) */ private String userName; * 昵稱(可以重復(fù)) private String nickName; * 郵箱 private String email; * 創(chuàng)建時(shí)間 private LocalDateTime createTime; * 修改時(shí)間 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> { }
實(shí)現(xiàn)
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; @Service public 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("默認(rèn)順序") @GetMapping("defaultOrder") public IPage<User> defaultOrder(Page<User> page) { return userService.page(page); } @ApiOperation("通過(guò)orderItems") @GetMapping("orderItems") public IPage<User> orderItems(Page<User> page) { page.addOrder(OrderItem.desc("create_time")); // 可以指定多列。比如下邊這個(gè):按create_time排序,若create_time相同,則按id排序 // page.addOrder(OrderItem.desc("create_time"), OrderItem.asc("id")); @ApiOperation("通過(guò)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) { }
測(cè)試
訪問(wèn)Knife4j頁(yè)面:http://localhost:8080/doc.html
1.不指定順序
本處前端不傳任何參數(shù)進(jìn)行的測(cè)試。
2.后端OrderItem排序(create_time倒序)
本處前端不傳任何參數(shù)進(jìn)行的測(cè)試。
3.后端Wrapper排序(create_time倒序,id升序)
本處前端不傳任何參數(shù)進(jìn)行的測(cè)試。
4.前端指定排序(create_time倒序)
前端指定orders[0].asc和orders[0].column
結(jié)果:
到此這篇關(guān)于MyBatis-Plus分頁(yè)時(shí)的排序的文章就介紹到這了,更多相關(guān)MyBatisPlus分頁(yè)排序內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- SpringBoot使用mybatis-plus分頁(yè)查詢無(wú)效的問(wèn)題解決
- Mybatis-Plus 多表聯(lián)查分頁(yè)的實(shí)現(xiàn)代碼
- MyBatis-Plus 分頁(yè)查詢以及自定義sql分頁(yè)的實(shí)現(xiàn)
- MyBatis-Plus分頁(yè)插件不生效的解決方法
- 解決mybatis plus 一對(duì)多分頁(yè)查詢問(wèn)題
- MyBatis-Plus實(shí)現(xiàn)分頁(yè)的方法使用詳解
- MyBatis-Plus實(shí)現(xiàn)2種分頁(yè)方法(QueryWrapper查詢分頁(yè)和SQL查詢分頁(yè))
- Mybatis-Plus如何使用分頁(yè)實(shí)例詳解
- Mybatis-plus原生pages分頁(yè)未生效的解決方案
- mybatis-plus分頁(yè)無(wú)效問(wèn)題解決
相關(guān)文章
springboot2.0以上調(diào)度器配置線程池的實(shí)現(xiàn)
這篇文章主要介紹了springboot2.0以上調(diào)度器配置線程池的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12詳解IntelliJ IDEA創(chuàng)建spark項(xiàng)目的兩種方式
這篇文章主要介紹了詳解IntelliJ IDEA創(chuàng)建spark項(xiàng)目的兩種方式,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-01-01java+jdbc+mysql+socket搭建局域網(wǎng)聊天室
這篇文章主要為大家詳細(xì)介紹了java+jdbc+mysql+socket搭建局域網(wǎng)聊天室,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-01-01SpringBoot中properties,yml,yaml的區(qū)別及使用說(shuō)明
這篇文章主要介紹了SpringBoot中properties,yml,yaml的區(qū)別及使用說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-03-03Spring中InitializingBean的使用詳細(xì)解析
這篇文章主要介紹了Spring中InitializingBean的使用詳細(xì)解析,InitializingBean是Spring提供的拓展性接口,提供了屬性初始化后的處理方法,它只有一個(gè)afterPropertiesSet方法,凡是繼承該接口的類,在bean的屬性初始化后都會(huì)執(zhí)行該方法,需要的朋友可以參考下2024-02-02Java中BufferedReader類獲取輸入輸入字符串實(shí)例
這篇文章主要介紹了Java中BufferedReader類獲取輸入輸入字符串實(shí)例,分享了相關(guān)代碼示例,小編覺(jué)得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-02-02mybatis映射內(nèi)部類的使用及注意事項(xiàng)說(shuō)明
這篇文章主要介紹了mybatis映射內(nèi)部類的使用及注意事項(xiàng)說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12Java 把json對(duì)象轉(zhuǎn)成map鍵值對(duì)的方法
這篇文章主要介紹了java 把json對(duì)象中轉(zhuǎn)成map鍵值對(duì)的方法,本文的目的是把json串轉(zhuǎn)成map鍵值對(duì)存儲(chǔ),而且只存儲(chǔ)葉節(jié)點(diǎn)的數(shù)據(jù) 。需要的朋友可以參考下2018-04-04