MyBatis-generator使用,Example缺少分页问题解决

一、分页问题

MyBatis自动生成代码没有分页功能。

如:

public class User {

    private Integer userId;
    private String name;

    public Integer getUserId() {
        return userId;
    }

    public void setUserId(Integer userId) {
        this.userId = userId;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

pubilc class Test{

   public static void main(String[] args){
        UserExample user= new UserExample();
        user.createCriteria().andNameLike("%" + "zhansan" + "%");
        user.setOrderByClause("user_id asc");
        List<User> uList = userMapper.selectByExample(user);

   }

}

 

二、解决方案

1、改写selectByExample方法和XML,增加分页字段;具有侵入性,下一次自动生成代码失效

2、新增分页查询@Select注解方法;需要额外的Mapper基接口


public interface UserMapper extends UserBaseMapper {
//... generate method
}


public interface UserBaseMapper {


    @Select({
            "<script>",
            "select u.user_id as userId, u.user_name as `name` ",
            "from user u ",
            "where 1=1 ",
            "<if test=\"u!=null\"> ",
            "   <if test=\"u.userId!=null\"> ",
            "       and u.user_id=#{u.userId} ",
            "   </if>",
            "   <if test=\"u.name!=null and u.name.length()>0\"> ",
            "       and u.`name`=#{u.name} ",
            "   </if> ",
            "</if> ",
            " limit #{index},#{limit}",
            "</script>"
    })
    public List<User> select(@Param("u") User user, @Param("index") int index, @Param("limit") int limit);
}

3、改造Example的setOrderByClause()方法,使它支持分页

利用Mapper.xml的orderByClause使用$插值的方式,进行注入分页SQL limit

UserExample user= new UserExample();
user.createCriteria().andUserIdEqualTo(1);
user.setOrderByClause("user_id asc limit 0,20");//分页功能
List<User> uList = userMapper.selectByExample(user);

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值