思考:为什么要分页
为的是减少数据量
使用Limit分页
select * from mybatis.user limit startIndex,pageSize;
使用Mybatis实现分页,核心SQL
1.接口文件
package com.cbbpp.dao;
import com.cbbpp.pojo.User;
import java.util.List;
import java.util.Map;
public interface UserMapper {
//分页
List<User> getUserByLimit(Map<String,Integer> map);
}
2.Mapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--namespace=需要绑定一个对应的Dao/Mapper接口-->
<mapper namespace="com.cbbpp.dao.UserMapper">
<!--结果集映射-->
<resultMap id="UserMap" type="User">
<!--其中column为数据库的字段名,property为pojo对象中的属性名-->
<result column="id" property="id"></result>
<result column="name" property="name"></result>
<result column="pwd" property="password"></result>
</resultMap>
<select id="getUserByLimit" parameterType="map" resultMap="UserMap">
select * from mybatis.user limit #{startIndex},#{pageSize}
</select>
</mapper>
3.测试
@Test
public void getUserByLimit(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
Map<String, Integer> map = new HashMap<String, Integer>();
map.put("startIndex",0);
map.put("pageSize",2);
List<User> userByLimit = userMapper.getUserByLimit(map);
for (User user : userByLimit) {
System.out.println(user);
}
sqlSession.close();
}
使用RowBounds分页
不在使用SQL实现分页
1.接口
package com.cbbpp.dao;
import com.cbbpp.pojo.User;
import java.util.List;
public interface UserMapper {
//分页
List<User> getUserByRowBounds();
}
2.mapper.xml
<mapper namespace="com.cbbpp.dao.UserMapper">
<!--结果集映射-->
<resultMap id="UserMap" type="User">
<!--其中column为数据库的字段名,property为pojo对象中的属性名-->
<result column="id" property="id"></result>
<result column="name" property="name"></result>
<result column="pwd" property="password"></result>
</resultMap>
<select id="getUserByRowBounds" resultMap="UserMap">
select * from mybatis.user
</select>
</mapper>
3.测试
@Test
public void getUserByRowBounds(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
//通过RowBounds实现分页
RowBounds rowBounds = new RowBounds(1, 2);
//通过java代码层面实现分类
List<Object> objects = sqlSession.selectList("com.cbbpp.dao.UserMapper.getUserByRowBounds",null,rowBounds);
for (Object object : objects) {
System.out.println(object);
}
sqlSession.close();
}
分页插件
MybatisPageHelper