思考:为什么要分页?
-
减少数据的处理量
使用Limit分页
select * from t_user limit 2 offset 1;
使用Mybatis实现分页,核心SQL
- 接口
List<User> getUserByLimit(Map<String, Object> map);
- Mapper.xml
<?xml version="1.0" encoding="UTF8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.shang.dao.UserMapper"> <!-- 字段映射 --> <resultMap id="UserMapper" type="User"> <result property="password" column="pwd"/> </resultMap> <select id="getUserByLimit" parameterType="map" resultMap="UserMapper"> SELECT * FROM t_user limit #{size} OFFSET #{page}; </select> </mapper>
- 测试
@Test public void getUserByLimit() { SqlSession sqlSession = MybatisUtils.getSqlSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class); HashMap<String, Object> stringObjectHashMap = new HashMap<>(); stringObjectHashMap.put("size", 2); stringObjectHashMap.put("page", 2); List<User> userByLimit = mapper.getUserByLimit(stringObjectHashMap); for (User user : userByLimit) { System.out.println(user); } }
使用RowBounds分页
- 接口
List<User> getUserByLimit(Map<String, Object> map);
- Mapper.xml
<?xml version="1.0" encoding="UTF8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.shang.dao.UserMapper"> <!-- 字段映射 --> <resultMap id="UserMapper" type="User"> <result property="password" column="pwd"/> </resultMap> <select id="getUserByLimit" parameterType="map" resultMap="UserMapper"> SELECT * FROM t_user; </select> </mapper>
- 测试
@Test public void getUserByLimit() { RowBounds rowBounds = new RowBounds(1, 2); SqlSession sqlSession = MybatisUtils.getSqlSession(); List<User> userByLimit = sqlSession.selectList("com.shang.UserMapper.getUserByLimit", null, rowBounds); for (User user : userByLimit) { System.out.println(user); } }