一、limit实现分页:
limit 的sql语句
SELECT * FROM `user`
LIMIT m,n; //从m开始,到n结束
SELECT * FROM `user`
LIMIT n; //从0开始到n结束
1、创建抽象方法
//分页查询
List<User> getLimitUser(Map<String,Integer> map);
2、配置mapper.xml文件
<!--因为实体类中的属性和数据库中的表列不一样所以需要创建相应的resultMap映射-->
<resultMap id="abc" type="User">
<result property="password" column="pwd"/>
</resultMap>
<select id="getLimitUser" parameterType="map" resultMap="abc">
select * from mybatis1.user limit #{m},#{n};
</select>
3、创建测试类
@Test
public void testLimit(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
//map要是忘记了看前面的学习笔记
Map<String,Integer> map = new HashMap<String,Integer>();
map.put("m",0);
map.put("n",5);
logger.info(map);
List<User> userList = mapper.getLimitUser(map);
for (User user : userList) {
System.out.println(user);
}
sqlSession.close();
}
二、RowBounds实现分页
同样的三个步骤:抽象类 —》mapper.xml—》测试类
实体类:这里的实体类不用传参数
//RowBounds分页查询
List<User> getRowBoundsUser();
mapper.xml:这里的sql语句就是查询全部的语句,因为RowBounds的分页功能是通过java代码来实现的
<select id="getRowBoundsUser" resultMap="abc">
select * from mybatis1.user;
</select>
测试类:主要区别就在于这里通过RowBounds来实现分页用到的是SqlSession 提供的数据库执行 SQL 命令的方法(现在不怎么用了)
@Test
public void testgetRowBoundsUser(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
//通过SqlSession的方法查询数据
List<User> userList = sqlSession.selectList("com.li.dao.UserMapper.getRowBoundsUser");
for (User user : userList) {
System.out.println(user);
}
sqlSession.close();
}
RowBounds类:
public class RowBounds {
public static final int NO_ROW_OFFSET = 0;
public static final int NO_ROW_LIMIT = 2147483647;
public static final org.apache.ibatis.session.RowBounds DEFAULT;
private final int offset;
private final int limit;
public RowBounds() { /* compiled code */ }
public RowBounds(int offset, int limit) { /* compiled code */ }
public int getOffset() { /* compiled code */ }
public int getLimit() { /* compiled code */ }
}
分页实现是用到了sqlSession里selectList的重载,这个方法需要三个参数,第二个参数我们没有直接为空就行
@Test
public void testgetRowBoundsUser(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
//创建一个RowBounds,用到它的构造方法实现分页,两个参数一个是分页头,一个是分页尾
RowBounds rowBounds = new RowBounds(0,2);
//通过SqlSession的方法查询数据
List<User> userList = sqlSession.selectList("com.li.dao.UserMapper.getRowBoundsUser",null,rowBounds);
for (User user : userList) {
System.out.println(user);
}
sqlSession.close();
}
需要用到的时候按照官网文档操作即可