@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 已经注入,并且拦截器已经添加。
分页部分代码:
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。
返回的 IPage json对象信息
解决了, 目前发现是 MybatisPlusInterceptor 和 MybatisSqlSessionFactoryBean 有冲突,但是冲突的原因不知道,把MybatisSqlSessionFactoryBean 注释掉分页插件就生效了。
直接 @Autowired UserMapper 试试呢
他这个分页不会出现limit
你看过mybatisplus 官方的分页集成么,好像不是这样写的