myBatis 分页查询
为什么分页
- 减少数据处理量
使用limit分页
语法:SELECT* from user limit startIndex ,pagesize;
SELECT * from user limit 3; -->#[0,n]
怎么实现
- 接口
方式一
//分页查询
List<User> limitSelect(Map<String,Integer> map);
方式二
//分页查询2
List<User> RowBounds();
- mapper.xml
方式一
<!--结果集映射-->
<resultMap id="UserMap" type="user">
<!--column数据库中的字段, property实体类中的属性-->
<result column="id" property="id"/>
<result column="name" property="name"/>
<result column="pwd" property="password"/>
</resultMap>
<select id="limitSelect" resultMap="UserMap" parameterType="map">
select * from myBatis.user limit #{startIndex},#{pageSize};
</select>
方式二
<!--分页2rowBounds-->
<select id="RowBounds" resultMap="UserMap" >
select * from myBatis.user;
</select>
3测试
方式一
@Test
public void limitSelect() {
SqlSession sqlSession = myBatisUtils.getSqlSession();
UserDao mapper = sqlSession.getMapper(UserDao.class);
Map<String, Integer> map = new HashMap<>();
map.put("startIndex", 0);
map.put("pageSize", 1);
List<User> result=mapper.limitSelect(map);
for (User user : result) {
System.out.println(user);
}
sqlSession.close();
}
方式二
@Test
public void rowBounds() {
SqlSession sqlSession = myBatisUtils.getSqlSession();
//rowBounds实现分页
RowBounds rowBounds = new RowBounds(1, 2);
//通过java代码层面实现分页
List<User> userList = sqlSession.selectList("dao.UserDao.RowBounds",null,rowBounds);
for (User user : userList) {
System.out.println(user);
}
sqlSession.close();
}