Mybatis Plus如何使用自定义方法实现分页呢?
迪丽瓦拉
2024-03-06 23:42:04
0

转自:

Mybatis Plus如何使用自定义方法实现分页呢?

下文笔者讲述Mybatis之Plus实现自定义分页的方法分享,如下所示

写在前面的话

 在以前没有自定义分页方法时我们使用Limit currIndex 和 pageSize在MyBatis中的sql信息即可实现分页效果如: 采用这种模式,编写的sql,非常的冗余而且不好维护,所以笔者编写一个拦截器用于实现分页插件

Mybatis-Plus使用说明

添加Mybatis-plus

       com.baomidoumybatis-plus2.1.8

配置拦截器

import com.baomidou.mybatisplus.plugins.PaginationInterceptor;    
import org.springframework.context.annotation.Bean;    
import org.springframework.context.annotation.Configuration;/**     * mybatis-plus配置     *     */    @Configuration    public class MybatisPlusConfig {/**         * 分页插件         */        @Bean        public PaginationInterceptor paginationInterceptor() {             PaginationInterceptor page = new PaginationInterceptor();             page.setDialectType("mysql");             return page;        }    }

service实现

    传统的查询方式SELECT *FROM sys_userWHERE (name='猫猫' AND sex=0 AND age BETWEEN '20' AND '30')LIMIT 0,10使用Mybtis-plus,可以轻松实现分页查询//分页查询 10 条姓名为‘猫猫’、性别为男,且年龄在20至30之间的用户记录   List userList = userMapper.selectPage(new Page(1, 10),new EntityWrapper().eq("name", "猫猫").eq("sex", 0).between("age", "20", "30"))以上是单表查询的分页实现,多表查询,或者比较复杂的查询语句也可以轻松实现:public Page selectUserPage(Page page, Integer state) {// 不进行 count sql 优化,解决 MP 无法自动优化 SQL 问题// page.setOptimizeCountSql(false);// 不查询总记录数// page.setSearchCount(false);// 注意!! 分页 total 是经过插件自动 回写 到传入 page 对象return page.setRecords(userMapper.selectUserList(page, state));}注意根据前端传来的分页参数当前第几页,每页多少条,构造一个page 对象,初始化这些参数将page对象传递给mapper拦截器会自动在sql语句加上limit查询
自动查询总记录数并写回page对象

mapper接口及xml

 public interface UserMapper{//可以继承或者不继承BaseMapper/*** 

* 查询 : 根据state状态查询用户列表,分页显示*

** @param page* 翻页对象,可以作为 xml 参数直接使用,传递参数 Page 即自动分页* @param state* 状态* @return*/List selectUserList(Pagination page, Integer state); }UserMapper.xml 等同于编写一个普通 list 查询,mybatis-plus 自动替你分页
注意事项必须传递page参数否则不能实现分页查询sql可实现多表联合查询的复杂语句

相关内容