2017网站开发兼职,唐山哪里建轻轨和地铁,公司做网站公司,成都市建设网站公司目录 前言1. 基本知识2. 常用方法3. 实战 前言
由于工作中经常使用到MybatisPlus的框架#xff0c;对此详细连接Page类有利于开发#xff0c;更加游刃有余
对于该类的源码#xff1a;baomidou / mybatis-plus 中的Page源码
MybatisPlus的框架#xff1a;MyBatis-plus从入… 目录 前言1. 基本知识2. 常用方法3. 实战 前言
由于工作中经常使用到MybatisPlus的框架对此详细连接Page类有利于开发更加游刃有余
对于该类的源码baomidou / mybatis-plus 中的Page源码
MybatisPlus的框架MyBatis-plus从入门到精通全实战中的其他CRUD【Java项目】实战CRUD的功能整理持续更新学习JAVA其他框架java框架 零基础从入门到精通的学习路线 附开源项目面经等超全
1. 基本知识
主要的包来源于com.baomidou.mybatisplus.extension.plugins.pagination.Page 这个才是 MyBatis-Plus 框架中的分页类。需要与其他Page包区分开
一、概念
Page 类是用于封装分页信息的 Java 类它主要用于在数据库查询时支持分页查询操作。
二、分页查询的作用
提高查询性能当数据库中数据量庞大时一次性查询所有数据可能导致性能问题。通过分页查询可以限制每次查询的数据量提高查询性能。减轻数据库负担分页查询可以减轻数据库的负担降低资源消耗特别是在大型数据集的情况下。
三、支持不同数据库的分页查询
MyBatis-Plus 的 Page 类封装了不同数据库的分页查询语句使得在不同数据库中实现分页更加灵活。
四、常见用法
在 MyBatis-Plus 中通常会将 Page 对象传递给查询方法然后在查询中使用它的信息进行分页操作以获取指定页的数据。
五、分页查询的关键属性
current当前页码表示当前查询的是第几页的数据。size每页记录数表示每页显示多少条记录。total总记录数表示满足查询条件的总记录数。pages总页数通过总记录数和每页记录数计算得出。
六、分页查询的方法链式调用
MyBatis-Plus 的 Page 类支持方法链式调用可以通过链式调用设置和获取分页信息使代码更加简洁。 通过 page 对象获取分页信息和查询结果
/*
selectPage 方法是 MyBatis-Plus 提供的分页查询方法它会根据传入的 Page 对象进行分页查询并将结果设置回 Page 对象中
*/
PageUser page new Page(1, 10);
page.setRecords(userMapper.selectPage(page, new QueryWrapperUser().eq(status, 1)).getRecords());2. 常用方法
构造方法
Page(long current, long size)通过指定当前页码和每页记录数创建分页对象。Page(long current, long size, long total)通过指定当前页码、每页记录数和总记录数创建分页对象。
其属性除了上面的四个还有如下 常用方法
setRecords(ListT records)设置当前页的记录列表。getRecords()获取当前页的记录列表。setTotal(long total)设置总记录数。getTotal()获取总记录数。setCurrent(long current)设置当前页码。getCurrent()获取当前页码。setSize(long size)设置每页记录数。getSize()获取每页记录数。getPages()计算总页数。hasPrevious()判断是否有上一页。hasNext()判断是否有下一页。
示例的Demo如下
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;public class pagedemo {public static void main(String[] args) {// 创建分页对象指定当前页码为1每页记录数为10PageString page new Page(1, 10);// 模拟从数据库中查询总记录数long total 100;page.setTotal(total);// 输出分页信息System.out.println(当前页码 page.getCurrent());System.out.println(每页记录数 page.getSize());System.out.println(总记录数 page.getTotal());System.out.println(总页数 page.getPages());System.out.println(是否有上一页 page.hasPrevious());System.out.println(是否有下一页 page.hasNext());}
}截图如下 3. 实战
以实战来分析后端对于该类是如何操作的
对于自定义分页的Controller类 /*** 自定义分页*/GetMapping(/page)ApiOperationSupport(order 3)ApiOperation(value 分页, notes 传入User)public RIPageUserVO page(UserVO userVO, Query query) {IPageUserVO pages userService.selectUserPage(Condition.getPage(query), userVO);return R.data(pages);}对应Service中的方法如下
public interface UserService extends BaseServiceUser {/*** 自定义分页** param page* param userVO* return*/IPageUserVO selectUserPage(IPageUserVO page, UserVO userVO);}对应的实现类如下
Service
public class UserServiceImpl extends BaseServiceImplUserMapper, User implements UserService{Overridepublic IPageUserVO selectUserPage(IPageUserVO page, UserVO userVO) {return page.setRecords(baseMapper.selectUserPage(page, userVO));}}对应的Mapper如下
public interface UserMapper extends BaseMapperUser {/*** 自定义分页** param page* param tyreRepareOrderVO* return*/ListUserVO selectUserPage(IPage page, UserVO userVO);}其中selectUserPage涉及xml文件主要与数据库对接
?xml version1.0 encodingUTF-8?
!DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//EN http://mybatis.org/dtd/mybatis-3-mapper.dtd
mapper namespaceorg.xx.mapper.UserMapper!-- 通用查询映射结果 --resultMap iduserResultMap typeorg.xx.entity.UserMapperresult columnid propertyid/result columncreate_user propertycreateUser/result columncreate_dept propertycreateDept//resultMapselect idselectUserPage resultMapuserResultMapselect * from User where is_deleted 0/select/mapper对于上述框架还涉及Mybatis的基本知识可看这篇文章进行补充Mybatis从入门到精通全