当前位置 博文首页 > **My Coding Family**:记录:MyBatis-Plus分页插件失效,原因竟
描述:
项目中用到boot 整合 mybatis-plus , 个人在使用分页条件查询的时候一直查不出 total, pages, 终于找到原因了。
mybatis-plus环境:
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.2.0</version>
</dependency>
IPage分页使用:
package com.system.xiaoma.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.system.xiaoma.base.BasePage;
import com.system.xiaoma.entity.User;
import com.system.xiaoma.mapper.UserMapper;
import com.system.xiaoma.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* <p>
* 服务实现类
* </p>
*
* @author luoyong
* @since 2021-4-16
*/
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
@Autowired
UserMapper userMapper;
@Override
public IPage<User> queryPage(BasePage basePage, User sysUser) {
Page<User> page = new Page<>();
if (basePage.getPage() != null && basePage.getLimit() != null) {
page = new Page<>(basePage.getPage(), basePage.getLimit());
}
return userMapper.queryPage(page, sysUser);
}
}
实际分页失效,如图:?
?
解释:如上代码一顿操作后,结果发现并没有分页成功,这是因为我们缺少了PaginationInterceptor的配置。
按照如下配置即可,亲测。
package com.system.xiaoma.config;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;
/**
* @Author: luoyong
* @Date: 2021/4/16
*/
@Configuration
@MapperScan("com.system.xiaoma.mapper") //对应你项目中的mapper包
public class MybatisPlusConfig {
/**
* 分页插件
*/
@Bean
public PaginationInterceptor paginationInterceptor() {
PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
// 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求 默认false
// paginationInterceptor.setOverflow(false);
// 设置最大单页限制数量,默认 500 条,-1 不受限制
// paginationInterceptor.setLimit(500);
// 开启 count 的 join 优化,只针对部分 left join
paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true));
return paginationInterceptor;
}
}
诺,分页这不就OK了嘛;
cs?如果文章对您有所帮助,就在文章的右上角或者文章的末尾点个赞吧!(づ ̄ 3 ̄)づ?
?如果喜欢大白兔分享的文章,就给大白兔点个关注吧!(?′?‵?)づ╭?~
?对文章有任何问题欢迎小伙伴们下方留言或者入群探讨【群号:708072830】
?鉴于个人经验有限,所有观点及技术研点,如有异议,请直接回复讨论(请勿发表攻击言论)