当前位置: 首页 > news >正文

MyBatis Plus 分页

一、分页插件

MyBatis Plus自带分页插件,只要简单的配置即可实现分页功能

1、添加配置类

@Configuration
public class MyConfig {@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();interceptor.addInnerInterceptor(newPaginationInnerInterceptor(DbType.MYSQL));//添加乐观锁插件interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());return interceptor;}
}

2、测试

@Test
public void testPage() {Page<User> page = new Page<>(1, 5);Page<User> page1 = userService.page(page);System.out.println("总页数:"+page1.getPages());System.out.println("总记录数:"+page1.getTotal());System.out.println("当前页内容:"+page1.getRecords());System.out.println("当前页:"+page1.getCurrent());System.out.println("每页显示的条数:"+page1.getSize());System.out.println("是否有上一页:"+page1.hasPrevious());System.out.println("是否有下一页:"+page1.hasNext());
}

输出:

总页数:8
总记录数:39
当前页内容:[User(id=2, name=韩梅梅, age=28, email=123@qq.com), User(id=3, name=王刚, age=28, email=123@qq.com), User(id=4, name=张婷, age=28, email=123@qq.com), User(id=5, name=赵强, age=28, email=123@qq.com), User(id=6, name=孙丽, age=28, email=123@qq.com)]
当前页:1
每页显示的条数:5
是否有上一页:false
是否有下一页:true

二、XML 自定义分页

1、UserMapper 中自定义接口方法

/*** 自定义分页* @param page:传入分页对象进行分页,SQL中不需要对该参数进行处理* @param name:条件查询参数* @return*/
Page<User> myselfSelectPage(@Param("page") Page<User> page, @Param("name") String name);

2、UserMapper.xml 中编写SQL语句

注意xml文件位置,存放在 /resources/mappers/ 下

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.goose.mapper.UserMapper"><sql id="BaseColumns">id,`name`,age,email</sql><select id="myselfSelectPage" resultType="com.goose.entity.User">select <include refid="BaseColumns"/> from `user` where name like concat('%',#{name},'%')</select></mapper>

3、yml 配置文件

指定 .xml 配置文件位置

mybatis-plus:# 配置MyBatis日志configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl# 指定 .xml 配置文件位置mapper-locations: classpath*:mappers/*.xml

4、测试

@Test
public void testMyPage() {Page<User> page = new Page<>(1, 5);// ==>  Preparing: SELECT COUNT(*) AS total FROM `user` WHERE name LIKE concat('%', ?, '%')// ==>  Preparing: select id,`name`,age,email from `user` where name like concat('%',?,'%') LIMIT ?Page<User> page1 = userService.myselfSelectPage(page, "浩");System.out.println("总页数:"+page1.getPages());System.out.println("总记录数:"+page1.getTotal());System.out.println("当前页内容:"+page1.getRecords());
}

输出:

总页数:1
总记录数:2
当前页内容:[User(id=11, name=郑浩, age=28, email=123@qq.com), User(id=32, name=龚加浩, age=28, email=123@qq.com)]

http://www.lryc.cn/news/601705.html

相关文章:

  • WiFi Mouse PC端 v1.7.2 官方中文版
  • 《杜甫传》读书笔记与经典摘要(三)流亡与走向人民
  • SPSC无锁环形队列技术(C++)
  • 系统整理Python的循环语句和常用方法
  • CPA青少年编程能力等级测评试卷及答案 Python编程(三级)
  • 详解力扣高频SQL50题之610. 判断三角形【简单】
  • 内存泄漏问题排查
  • idea打开后project窗口未显示项目名称的解决方案
  • 24点数学游戏(穷举法求解表达式)
  • 【计算机网络架构】网状型架构简介
  • Java学习-------序列化与反序列化
  • Windows10+WSL2+Docker相关整理
  • 2025年Agent创业实战指南:从0到1打造高增长AI智能体项目
  • ABP VNext + Elastic APM:微服务性能监控
  • Kotlin递归
  • C++算法竞赛篇(五)循环嵌套题型讲解
  • 港股历史逐笔成交与分时十档买卖盘口数据深度解析
  • 标签驱动的可信金融大模型训练全流程-Agentar-Fin-R1工程思路浅尝
  • unity开发中Hash、Queue、LinkedList简单介绍
  • PandasAI连接LLM进行智能数据分析
  • LLM 多语言数据集
  • 《Java 程序设计》第 7 章 - 继承与多态
  • 9. 桥接模式
  • 递归查询美国加速-技术演进与行业应用深度解析
  • Cursor下利用Stagewise实现 “所见即改” 的前端开发体验~
  • MyBatis-Plus IService 接口全量方法实现与测试(续)
  • 【程序员私房菜】python尖椒炒口蘑
  • 神经网络模型训练需要的内存大小计算方法
  • 任务提醒工具怎么选?对比16款热门软件
  • 疯狂星期四文案网第21天运营日记