公司项目因为响应时间的问题,所以第二次迭代决定改用框架,之前的hibenate改成了mybaties-plus,鉴于之前没有用过这个插件,所以这边做个日记记录一下平常的坑,mybatis-puls和之前用的mybaties差不多,但是自带了许多插件,今天在分页的时候遇到了一些坑,做些记录:
1、springboot注入方式
//Spring boot方式
@EnableTransactionManagement
@Configuration
@MapperScan(basePackages = {"com.paoyou.oas.appuser.mybatis.*.dao"})
public class MybatisPlusConfig {
/**
* 分页插件
*/
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
}
2、mapper文件入参不再使用实体,而是使用苞米豆提供的page,里面有一系列参数用来支持分页,实体列表为里面的records列表
public interface UserMapper{//可以继承或者不继承BaseMapper
/**
*
* 查询 : 根据state状态查询用户列表,分页显示
* 注意!!: 如果入参是有多个,需要加注解指定参数名才能在xml中取值
*
*
* @param page 分页对象,xml中可以从里面进行取值,传递参数 Page 即自动分页,必须放在第一位(你可以继承Page实现自己的分页对象)
* @param state 状态
* @return 分页对象
*/
IPage selectPageVo(Page page, @Param("state") Integer state);
}
*
public class Page implements IPage {
private static final long serialVersionUID = 8545996863226528798L;
/**
* 查询数据列表
*/
private List records = Collections.emptyList();
/**
* 总数,当 total 不为 0 时分页插件不会进行 count 查询
*/
private long total = 0;
/**
* 每页显示条数,默认 10
*/
private long size = 10;
/**
* 当前页
*/
private long current = 1;
今天的一个坑是在我调用mapper中selectPageVo方法时,因为之前我用的是@Select注解开发,但是mybaties-plus的分页插件似乎只支持在mapper的xml文件中进行sql书写,导致我查询出来的结果封装page时报错。
错误的使用方式:使用注解开发
/**
*
* Mapper 接口
*
*
* @author wangt
* @since 2018-12-03
*/
public interface TbUsersMapper extends BaseMapper {
@Select("select * from tb_users where delete_flag=0 and work_state=1 order by id asc")
IPage selectPageVo(Page page);
}
正确的使用方式:在xml文件中书写SQL
因为是自己想太多,没有按照官方给的手册进行,吸取一个教训