MyBatis使用分页

分页

思考:为什么要分页?
  • 减少数据的处理量

使用Limit分页 

select * from t_user limit 2 offset 1;

使用Mybatis实现分页,核心SQL

  1. 接口
        List<User> getUserByLimit(Map<String, Object> map);
  2. 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>
  3. 测试
    @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分页 

  1. 接口
        List<User> getUserByLimit(Map<String, Object> map);
  2. 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>
  3. 测试
    @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);
        }
    
    }
原文地址:https://www.cnblogs.com/shangwei/p/15262690.html