#Mybaties-Plus踩坑日记(20181206)

在项目迭代中,作者将Hibernate替换为Mybatis-Plus,通过记录踩坑经验来分享使用Mybatis-Plus时遇到的问题。文章提到了在分页查询时,由于错误地尝试使用注解开发,而非在XML文件中编写SQL,导致分页功能无法正常工作。正确做法是遵循Mybatis-Plus官方手册,在XML文件中书写SQL。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

公司项目因为响应时间的问题,所以第二次迭代决定改用框架,之前的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<User> selectPageVo(Page page, @Param("state") Integer state);
	}
	
	 * 
public class Page<T> implements IPage<T> {

    private static final long serialVersionUID = 8545996863226528798L;

    /**
     * 查询数据列表
     */
    private List<T> 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时报错。
错误的使用方式:使用注解开发

/**
 * <p>
 *  Mapper 接口
 * </p>
 *
 * @author wangt
 * @since 2018-12-03
 */
public interface TbUsersMapper extends BaseMapper<TbUsers> {
	@Select("select * from tb_users where delete_flag=0 and work_state=1 order by id asc")
	IPage<TbUsers> selectPageVo(Page page);
}

正确的使用方式:在xml文件中书写SQL

<mapper namespace="com.paoyou.oas.appuser.mybatis.user.dao.TbUsersMapper">

	<select id="selectPageVo"  resultType="com.paoyou.oas.appuser.mybatis.user.model.TbUsers">
   		select * from tb_users where delete_flag=0 and work_state=1 order by id asc
	</select>
</mapper>

因为是自己想太多,没有按照官方给的手册进行,吸取一个教训

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值