MyBatis学习笔记(二)使用MyBatis实现分页显示

使用MyBatis分页,需要掌握两点知识

1、limit子句的使用。

2、MyBatis多参数传递的使用。

首先简单阐述一下limit子句

limit子句在MySQL中用于进行分页,将多条记录限制条数来显示,一般用法:

SELECT * FROM table LIMIT 0,3

0代表起始索引,3代表要显示的条数,所以上面的SQL就是要显示1-3条记录。

在此基础上,我们引入两个变量:currentPage(当前页码),pageSize(页容量),看下方的例子

SELECT * FROM t LIMIT 0,2 -- 显示1-2条记录,第1页,currentPage=1,pageSize=2
SELECT * FROM t LIMIT 2,2 -- 显示3-4条记录,第2页,currentPage=2,pageSize=2
SELECT * FROM t LIMIT 4,2 -- 显示5-6条记录,第3页,currentPage=3,pageSize=2

由此可以得出,起始索引与当前页码的公式:startIndex = (currentPage - 1)*pageSize,知道了这一步,我们进入下一步

MyBatis多参数传递

其实非常简单,利用注解@param就能实现

public List<Message> findByGetter(@Param(value="getter")String getter,@Param("startNum")int startNum,@Param(value="pageSize")int pageSize);

在接口里的抽象方法参数前加上注释,@Param(value="xxx")和@Param("xxx")都行,xxx就可以作为映射文件取值的属性名,用ognl表达式#{xxx}就能取出相应值。

<select id="findByGetter" resultType="entity.Message">
    select * from message where getter = #{getter} or getter = '所有人' limit #{startNum},#{pageSize}
</select>

接下来就是接收来自前端的传参进行处理就行

servlet接收前台的点击,判断是点击上一页还是下一页以对当前页码进行处理

服务层接收到当前页码后,通过公式计算出对应的起始索引,和页容量一并传递给dao层进行分页查询即可


猜你喜欢

转载自blog.csdn.net/icydate/article/details/79842321