MyBatis中使用RowBounds对查询结果集进行分页

MyBatis可以使用RowBounds逐页加载表数据。RowBounds对象可以使用offset和limit参数来构建。参数offset表示开始位置,而limit表示要取的记录的数目

映射文件:

        <select id="findAllUsers" resultType="User">
            select id,name,gender from t_user
        </select> 

映射接口中:

public List<User> findAllUsers(RowBounds rowBounds);

测试方法:

@Test
public void test_findAllUsers2(){

            SqlSession sqlSession = null;
            try {
                sqlSession = MyBatisSqlSessionFactory.openSession();

                SpecialMapper mapper = sqlSession.getMapper(SpecialMapper.class);

                //表示从第几条数据开始
                int offset = 0;
                //连续取出几条数据
                int limit = 5; 

                RowBounds rowBounds = new RowBounds(offset, limit); 

                List<User> list = mapper.findAllUsers(rowBounds);

                list.forEach(System.out::println);

            } catch (Exception e) {
                e.printStackTrace();
            }
} 

注意,若规定每页5条数据,要展示第二页,使用offset=5,limit=5

但是其实Mybatis的分页是基于内存的分页(查出所有记录再按偏移量和limit取结果),在大数据量的情况下这样的分页效率会很低,一般情况下我们会使用mybaits的分页辅助工具来完成分页

原文地址:https://www.cnblogs.com/Magic-Li/p/11684717.html

时间: 2024-10-29 19:11:37

MyBatis中使用RowBounds对查询结果集进行分页的相关文章

mybatis中的关联对象查询

方式1(嵌套查询): 在本类的mapper映射配置文件中的ResultMap标签中使用association子标签,对关联对象的属性进行关联 例如:User中关联Department(多对一) ----------User的mapper映射配置文件---------<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Map

Mybatis中的like模糊查询

1.  参数中直接加入%% param.setUsername("%CD%");      param.setPassword("%11%"); <select id="selectPersons" resultType="person" parameterType="person"> select id,sex,age,username,password from person where t

mybatis中的多条件查询

使用Map集合和索引号 接口: /** * 多条件查询Map集合 * @param map * @return */public List<Student> findByManyCondition(Map<String,Object> map); /** * 多参数查询使用索引 * @param name * @param age * @return */public List<Student> findStudentByCondition(String name,in

mybatis中的多表查询

1)无延迟加载的一对一关联 <resultMap type="Userbean" id="baseMap"> <id column="userid" property="userid"/> <result column="username" property="username"/> <collection property="dep&

Mybatis中模糊查询使用中文无法查询

解决Mybatis中模糊查询使用中文关键字无法查询 解决方法: 在mybatis中,采用模糊查询时,如果使用中文查询则无法查询出结果:采用英文则可以 解决方法:在sqlconfig.xml中:url的value值的后面加上?useUnicode=true&characterEncoding=UTF-8 原文地址:https://www.cnblogs.com/bestjdg/p/12043867.html

mybatis框架学习-多表查询

啰里巴嗦 mybatis中的多表查询 表之间的关系有几种: 一对多 多对一 一对一 多对多 举例: 用户和订单就是一对多 订单和用户就是多对一 一个用户可以下多个订单 多个订单属于同一个用户 人和身份证号就是一对一 一个人只能有一个身份证号 一个身份证号只能属于一个人 老师和学生之间就是多对多 一个学生可以被多个老师教过 一个老师可以交多个学生 特例: 如果拿出每一个订单,他都只能属于一个用户. 所以Mybatis就把多对一看成了一对一. mybatis中的多表查询: 示例:用户和账户 一个用户

Mybatis中的缓存管理

目录 Mybatis中的缓存管理 查询缓存工作原理: 配置缓存: 默认配置: 使用二级缓存: 刷新缓存过程: 配置EHcache 产生脏数据 使用原则: Mybatis中的缓存管理 查询缓存工作原理: 查询语句?<--->?缓存?<---->?DB 缓存内容: Mybatis中存放的是查询的内容: 缓存对比: 类别 作用范围 生命周期 一级缓存 namespace 和sqlsession的生存周期相同 二级缓存 namespace 和整个应用的生命周期相同 一级缓存:默认是开启的,

mybatis中的关联查询

1>在实体映射层中引入关联对象 package com.jinglin.hotelsup.model; import java.io.Serializable; public class Goodsinfo implements Serializable{ private Integer goodsid; private Integer companyid; private Integer goodstypeid; private Integer unitid; private String c

mybatis中sql语句查询操作

动态sql where if where可以自动处理第一个and. <!-- 根据id查询用户信息 --> <!-- public User findUserById(int id); --> <select id="findUserById" parameterType="user" resultType="user"> select * from user <!-- 当有if条件成立时,where会自