myBatis 分页查询

为什么分页

  • 减少数据处理量

使用limit分页

语法:SELECT* from user limit startIndex ,pagesize;
     SELECT * from user limit 3; -->#[0,n]

怎么实现

  1. 接口
    方式一
    //分页查询
    List<User> limitSelect(Map<String,Integer> map);

方式二

    //分页查询2
    List<User> RowBounds();
  1. 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();
    }
posted @ 2022-04-15 15:01  小幼虫虫  阅读(138)  评论(0)    收藏  举报