求解,Mybatis-Plus分页插件(MybatisPlusInterceptor)注入未生效,total 为0。

在配置类中已经配置了了 MybatisPlusInterceptor并且添加了PaginationInnerInterceptor,如下图所示
    @Bean("plusInterceptor")
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(){};
        PaginationInnerInterceptor p=  new PaginationInnerInterceptor();
        p.setDbType(DbType.MYSQL);
        p.setMaxLimit(10L);
        interceptor.addInnerInterceptor(p);
        return interceptor;
    }

同时 通过启动类代码 (如下)

 MybatisPlusInterceptor interceptor= (MybatisPlusInterceptor) ctx.getBean("plusInterceptor");
        List<InnerInterceptor> ins=interceptor.getInterceptors();
        ins.forEach(x->log.info(x.toString()));

日志输出bean 已经注入,并且拦截器已经添加。

img

分页部分代码:

            QueryWrapper<User> query = new QueryWrapper<>();
            query.lt("id", index);
            Page<User> pages = new Page<>((index/3), 3);
            UserMapper mapper = this.sqlSession.getMapper(UserMapper.class);
            IPage<User> ipages1 = mapper.selectPage(pages, query);
            log.info(String.valueOf(ipages1.getTotal()+"__"+ipages1.getSize()+"__"+ipages1.getPages()));
            return ipages1;

完整方法代码:

    @PostMapping("/user/{index}")
    public IPage<User> getUser(@PathVariable int index) {
        List<User> users = new ArrayList<>();
        if (index > 0) {
            QueryWrapper<User> query = new QueryWrapper<>();
            query.lt("id", index);
            Page<User> pages = new Page<>((index/3), 3);
            UserMapper mapper = this.sqlSession.getMapper(UserMapper.class);
            IPage<User> ipages1 = mapper.selectPage(pages, query);
            log.info(String.valueOf(ipages1.getTotal()+"__"+ipages1.getSize()+"__"+ipages1.getPages()));
            return ipages1;
        }
        return null;
    }

但是还是没有分页效果,SQL语句没有limit。

img

返回的 IPage json对象信息

img

解决了, 目前发现是 MybatisPlusInterceptor 和 MybatisSqlSessionFactoryBean 有冲突,但是冲突的原因不知道,把MybatisSqlSessionFactoryBean 注释掉分页插件就生效了。

直接 @Autowired UserMapper 试试呢

他这个分页不会出现limit

你看过mybatisplus 官方的分页集成么,好像不是这样写的