Mybatis-分页
1. 使用limit分页
# select * from user limit startIndex pageSize;
select * from user limit 0, 3;
2. 使用Mybatis实现分页,核心SQL
-
接口
List<User> getUserByLimit(Map<String, Object> map);
-
Mapper.xml
<select id="getUserByLimit" parameterType="map" resultMap="UserMap"> select * from user limit #{startIndex}, #{pageSize} </select>
这里还是使用了上一篇中的结果映射,同时为了方便我么使用map参数类型(map默认是Map的映射)
-
测试
@Test public void testGetUserByLimit() { // 第一步: 获得sqlSession对象 SqlSession sqlSession = MybatisUtils.getSqlSession(); // 执行 UserMapper userMapper = sqlSession.getMapper(UserMapper.class); HashMap<String, Object> map = new HashMap<>(); map.put("startIndex", 0); map.put("pageSize", 2); List<User> userList = userMapper.getUserByLimit(map); for (User user : userList) { System.out.println(user.getPwd()); } sqlSession.close(); }
3. RowBounds分页(了解)
不在使用SQL实现分页
-
接口
List<User> getUserByRowBounds();
-
Mapper.xml
<select id="getUserByRowBounds" resultMap="UserMap"> select * from user </select>
-
测试
@Test public void testGetUserByRowBounds() { // 第一步: 获得sqlSession对象 SqlSession sqlSession = MybatisUtils.getSqlSession(); // 创建RowBounds对象 RowBounds rowBounds = new RowBounds(1, 2); // 通过Java代码层面实现分页 List<User> userList = sqlSession.selectList("com.kangzhu.dao.UserMapper.getUserByRowBounds", null, rowBounds); for (User user : userList) { System.out.println(user.getId()); } sqlSession.close(); }
关于sqlSession.seslectList()的参数说明:
public interface SqlSession extends Closeable {
<T> T selectOne(String var1);
<T> T selectOne(String var1, Object var2);
<E> List<E> selectList(String var1);
<E> List<E> selectList(String var1, Object var2);
<E> List<E> selectList(String var1, Object var2, RowBounds var3); // 我们用的是这个方法
这里只截取了SqlSession接口的一部分;
note:如何更便更简单的实现分页?
分页插件(pageHelper)