• 分页插件
  • XML 自定义分页

    分页插件

    示例工程:

    ? mybatis-plus-sample-pagination分页插件 - 图1

    1. <!-- spring xml 方式 -->
    2. <plugins>
    3. <plugin interceptor="com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor">
    4. <property name="sqlParser" ref="自定义解析类、可以没有" />
    5. <property name="dialectClazz" value="自定义方言类、可以没有" />
    6. </plugin>
    7. </plugins>
    1. //Spring boot方式
    2. @EnableTransactionManagement
    3. @Configuration
    4. @MapperScan("com.baomidou.cloud.service.*.mapper*")
    5. public class MybatisPlusConfig {
    6. @Bean
    7. public PaginationInterceptor paginationInterceptor() {
    8. PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
    9. // 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求 默认false
    10. // paginationInterceptor.setOverflow(false);
    11. // 设置最大单页限制数量,默认 500 条,-1 不受限制
    12. // paginationInterceptor.setLimit(500);
    13. return paginationInterceptor;
    14. }
    15. }

    XML 自定义分页

    • UserMapper.java 方法内容
    1. public interface UserMapper{//可以继承或者不继承BaseMapper
    2. /**
    3. * <p>
    4. * 查询 : 根据state状态查询用户列表,分页显示
    5. * 注意!!: 如果入参是有多个,需要加注解指定参数名才能在xml中取值
    6. * </p>
    7. *
    8. * @param page 分页对象,xml中可以从里面进行取值,传递参数 Page 即自动分页,必须放在第一位(你可以继承Page实现自己的分页对象)
    9. * @param state 状态
    10. * @return 分页对象
    11. */
    12. IPage<User> selectPageVo(Page page, @Param("state") Integer state);
    13. }
    • UserMapper.xml 等同于编写一个普通 list 查询,mybatis-plus 自动替你分页
    1. <select id="selectPageVo" resultType="com.baomidou.cloud.entity.UserVo">
    2. SELECT id,name FROM user WHERE state=#{state}
    3. </select>
    • UserServiceImpl.java 调用分页方法
    public IPage<User> selectUserPage(Page<User> page, Integer state) {
        // 不进行 count sql 优化,解决 MP 无法自动优化 SQL 问题,这时候你需要自己查询 count 部分
        // page.setOptimizeCountSql(false);
        // 当 total 为小于 0 或者设置 setSearchCount(false) 分页插件不会进行 count 查询
        // 要点!! 分页返回的对象与传入的对象是同一个
        return userMapper.selectPageVo(page, state);
    }