如何用Mybatis逆向工程实现分页查询
一个很简单的方法,如果要mysql实现分页查询的话,执行下述语句即可
select * from table
limit (offset)5,(limit)10;
其中,第一个参数offset为游标起点,第二个参数limit为一次所取的数据量.这个语句在数据库中极其简单,但由于mybatis的逆向工程将绝大多数的sql语句包装成方法,那么如果要实现分页查询的话,本人看了下mapper.xml的代码,可以如下实现:
- 打开生成的example.class,在里面的变量中增加offset,limit两个变量,并为其添加set,get方法
protected int offset;
protected int limit;
public int getOffset() {
return offset;
}
public void setOffset(int offset) {
this.offset = offset;
}
public int getLimit() {
return limit;
}
public void setLimit(int limit) {
this.limit = limit;
}
- 打开mapper.xml文件里面对应位置设置配置.例如在selectByExample方法中配置,添加条件
<if test="offset != null && limit != null">
limit ${offset},${limit}
</if>
完整的代码如下:
<select id="selectByExample" resultMap="BaseResultMap"
parameterType="models.po.OpenInvitationCodeExample">
select
<if test="distinct">
distinct
</if>
<include refid="Base_Column_List" />
from open_invite_code
<if test="_parameter != null">
<include refid="Example_Where_Clause" />
</if>
<if test="orderByClause != null">
order by ${orderByClause}
</if>
<if test="offset != null && limit != null">
limit ${offset},${limit}
</if>
</select>
到这步,基本上的配置已完成.
3. 通过java代码实现具体业务逻辑,实现分页
Example example = new Example();
//设置分页属性进行分页查询
example.setOffset(offset);
example.setLimit(limit);
List lists = mapper.selectByExample(example);
上述便是在mybaitis的逆向工程的基础上增加了分页的功能.
本人刚开始实习,也是第一次写技术blog,如果有更好的方法或者不太正确的地方,欢迎指出~