mybatis实现分页

mybatis实现分页

分页的意义:分页的意义在于减少了数据的处理量

分页可以通过一下的方式实现:

  • sql中的limit实现分页
  • 在java代码中使用RowBounds实现分页

limit实现分页

核心SQL语法:

1
SELECT * FROM 表格名 limit startIndex,pageSize

元素分析:

  • startIndex: 指的是重哪个数据开始查询(默认是从0开始的)
  • pagesize: 指纸张的大小,可以查询到几个元素

回顾mybatis实现一个操作需要的步奏:

  • 编写接口
  • 编写Mapper.xml(主要写sql)
  • 编写测试方法

接口代码:

1
List<student> getStudentListByLimit(Map<String,Object> map);

这里使用的万能的map作为参数

Mapper.xml代码:

1
2
3
<select id="getStudentListByLimit" resultMap="StudentMap" parameterType="map">
select * from mybatis.student limit #{startIndex},#{pageSize}
</select>

有参数的查询必须要规定参数的类型

这里使用的resultMap(结果集映射)作为返回

实现方法代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Test
public void getStudentListByLimitTest(){
MyBatisUtils myBatisUtils = new MyBatisUtils();
SqlSession sqlSession = myBatisUtils.getSqlSession();
StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);
Map<String, Object> map = new HashMap<>();
map.put("startIndex",1);
map.put("pageSize",2);
List<student> studentListByLimit = mapper.getStudentListByLimit(map);
for (student student : studentListByLimit) {
System.out.println(student.toString());
}
sqlSession.close();
}

固定格式

RowBounds实现分页

这是更加服了java面向对象特点的方法,没有在sql进行操作,在测试类中进行操作

这种方法已经过时

操作步奏:

  • 接口

    1
    List<student> getStudentByRowBounds();
  • Mapper.xml

    1
    2
    3
    <select id="getStudentByRowBounds" resultMap="StudentMap">
    select * from mybatis.student
    </select>
  • 测试

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    @Test
    public void getStudentByRowBounds(){
    MyBatisUtils myBatisUtils = new MyBatisUtils();
    SqlSession sqlSession = myBatisUtils.getSqlSession();
    //其特点就是在sqlsession中直接进行select
    //第三个参数是RowBounds 因此需要创建
    //第一个参数是起始数,第二个参数是页面大小
    RowBounds rowBounds = new RowBounds(0, 3);
    List<student> students = sqlSession.selectList("com.dwx.mapper.StudentMapper.getStudentByRowBounds", null, rowBounds);
    for (student student : students) {
    System.out.println(student.toString());
    }
    }

selectList()方法有三个参数

第一个参数是我们执行这个方法的全路径,第二个数据一般是null,第三个数据是rowBounds

注意:我们这里并没有使用mapper,而是使用selectList,这种方法是已经放弃了的

Donate
  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.

扫一扫,分享到微信

微信分享二维码
  • Copyrights © 2015-2023 dwx
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信