Mybatis之分页查询

Mybatis分页查询

分页之前,考虑清楚一个问题,为什么需要分页呢?

  • 目的:减少数据的处理量

1.使用Limit分页

SQL语法:

#语法:SELECT * from user limit startIndex,pageSize; 每页显示pageSize 从startIndex开始查
select * from user limit  0,2;
select * from user limit  2,2;
select * from user limit  0,-1; #从4到最后一个值
select * from user limit  3; #[0,3] 从0到这个地方

**使用Mybatis实现分页,核心还是SQL!

1.1接口

    /**
     * 分页查询
     * @param map
     * @return
     */
    List<User> getUserByLimit(Map<String,Integer> map);

1.2Mapper.xml




1.3测试

    @Test
    public void getUserByLimit(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);

        HashMap<String,Integer> map = new HashMap<String,Integer>();
        map.put("startIndex",0);
        map.put("pageSize",2);

        List<User> userByLimit = mapper.getUserByLimit(map);//里面需要传map 所以需要构建一个map出来

        for (User user : userByLimit) {
            System.out.println(user);
        }

        sqlSession.close();
    }

2.RowBounds分页

Java中万物皆对象 不再使用SQL实现分页

2.1接口

   /**
     * 分页查询2
     * RowBounds
     * @return
     */
    List<User> getUserByRowBounds();

2.2Mapper.xml


<select id="getUserByRowBounds" resultMap="UserMap">
    select * from  mybatis.user
select>

2.3测试

 @Test
    public void getUserByRowBounds(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();

        //通过RowBounds实现分页
        RowBounds rowBounds = new RowBounds(1, 2);//从第一个数据开始 每页显示两个

        //通过Java代码层面实现分页
        List<User> userList = sqlSession.selectList("com.hang.dao.UserMapper.getUserByRowBounds",null,rowBounds);
        for (User user : userList) {
            System.out.println(user);
        }

        sqlSession.close();
    }

    }

    //select * from mybatis.user where id = #{id}
    //类型处理器(如果属性字段和数据库字段一样,直接转义了 现在也做这个事情  现在去找属性pwd去了 发现找不到)
    //select id,name,pwd from mybatis.user where id = #{id} 完整是这么写

3.分页插件

Mybatis之分页查询_第1张图片

这里了解即可

你可能感兴趣的:(mybatis,sql,数据库)