Mybatis-分页

Mybatis-分页

1. 使用limit分页

# select * from user limit startIndex pageSize;
select * from user limit 0, 3;

2. 使用Mybatis实现分页,核心SQL

  1. 接口

    List<User> getUserByLimit(Map<String, Object> map);
    
  2. Mapper.xml

    <select id="getUserByLimit" parameterType="map" resultMap="UserMap">
        select * from user limit #{startIndex}, #{pageSize}
    </select>
    

    这里还是使用了上一篇中的结果映射,同时为了方便我么使用map参数类型(map默认是Map的映射)

  3. 测试

    @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实现分页

  1. 接口

    List<User> getUserByRowBounds();
    
  2. Mapper.xml

    <select id="getUserByRowBounds" resultMap="UserMap">
        select * from user
    </select>
    
  3. 测试

    @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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值