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


    转自:

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

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

    写在前面的话

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

    Mybatis-Plus使用说明

    添加Mybatis-plus

           
                com.baomidou
                mybatis-plus
                2.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_user
        WHERE (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可实现多表联合查询的复杂语句
  • 相关阅读:
    Linux系统内核作用
    pip出现的问题
    【C语言刷LeetCode】15. 三数之和(M)
    基于matlab的FP-MAP球形检测算法误码率仿真
    python每日一练(5)
    关于DatagridviewComboBox控件的若干技术问题
    leetcode 33.搜索旋转排序数组 二分法
    docker install kafka
    手撕代码彻底理解Promise
    R语言ggplot2可视化使用geom_ribbon函数对指定的区域进行色彩填充(默认灰色)、为不同的区域填充不同的色彩、为满足条件的区域进行自定义填充
  • 原文地址:https://blog.csdn.net/qq_25073223/article/details/128127886