如何用Mybatis逆向工程实现分页查询(更改生成的Example)

如何用Mybatis逆向工程实现分页查询 
一个很简单的方法,如果要mysql实现分页查询的话,执行下述语句即可

    select * from table
    limit (offset)5,(limit)10;

其中,第一个参数offset为游标起点,第二个参数limit为一次所取的数据量.这个语句在数据库中极其简单,但由于mybatis的逆向工程将绝大多数的sql语句包装成方法,那么如果要实现分页查询的话,本人看了下mapper.xml的代码,可以如下实现:

1、打开生成的example.class,在里面的变量中增加offset,limit两个变量,并为其添加set,get方法
 

    protected Integer leftLimit;
    protected Integer limitSize;

    public Integer getLeftLimit() {
        return leftLimit;
    }

    public void setLeftLimit(Integer leftLimit) {
        this.leftLimit = leftLimit;
    }

    public Integer getLimitSize() {
        return limitSize;
    }

    public void setLimitSize(Integer limitSize) {
        this.limitSize = limitSize;
    }
  1. 打开mapper.xml文件里面对应位置设置配置.例如在selectByExample方法中配置,添加条件
        <if test="leftLimit != null &amp;&amp; limitSize!= null">
          limit ${leftLimit},${limitSize}
        </if>

    改变的前提是要能看懂逆向工程中Example的含义,很好用很简单

  2. 完整代码如下

    <select id="selectByExample" parameterType="club.bagedate.o2o.entity.ShopExample"     resultMap="BaseResultMap">
    <!--
      WARNING - @mbg.generated
      This element is automatically generated by MyBatis Generator, do not modify.
      This element was generated on Tue May 14 10:48:08 CST 2019.
    -->
    select
    <if test="distinct">
      distinct
    </if>
    <include refid="Base_Column_List" />
    from shop
    <if test="_parameter != null">
      <include refid="Example_Where_Clause" />
    </if>
    <if test="orderByClause != null">
      order by ${orderByClause}
    </if>
    <if test="leftLimit != null &amp;&amp; limitSize!= null">
      limit ${leftLimit},${limitSize}
    </if>
  </select>
  1.  通过java代码实现具体业务逻辑,实现分页就OK了

posted @ 2019-05-20 21:16  莫逸风  阅读(719)  评论(0编辑  收藏  举报