SpringBoot+Mybatis实现分页查询[通俗易懂]

SpringBoot+Mybatis实现分页查询[通俗易懂]文章目录前言1.引入依赖2.Mapper中接口3.修改XML文件4.controller层调用接口5.测试总结前言分页查询是在web开发中常用的一种技术,当某个页面查询返回的数据量较大时,为了提高性能和用户体验不能将所有数据一次性返回给过前端,这时候就需要用到分页查询了PageHelper是一款开源的Mybatis第三方物理分页插件,springboot项目中集成PageHelper插件非…

大家好,又见面了,我是你们的朋友全栈君。

前言

分页查询是在web开发中常用的一种技术,当某个页面查询返回的数据量较大时,为了提高性能和用户体验不能将所有数据一次性返回给过前端,这时候就需要用到分页查询了

PageHelper是一款开源的Mybatis第三方物理分页插件,spring boot项目中集成PageHelper插件非常简单,下面将为大家详细介绍;

插件地址:https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/zh/HowToUse.md

1.引入依赖

在上一篇文章Mybatis 实现基本的增删改查 (基于Mybatis-generator插件方式)的基础上,在pom.xml中添加如下依赖:

        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.2.3</version>
        </dependency>

2.Mapper中接口

在EmployeeMapper.java中新增findByPaging接口,接口返回类型为Page

public interface EmployeeMapper { 
   
    int deleteByPrimaryKey(Long id);

    int insert(Employee record);

    int insertSelective(Employee record);

    Employee selectByPrimaryKey(Long id);

    int updateByPrimaryKeySelective(Employee record);

    int updateByPrimaryKey(Employee record);

    Page<Employee> findByPaging(Map param);
}

3.修改XML文件

在EmployeeMapper.xml中添加上面接口对应Sql查询语句,可以看到使用插件的方式查询时,这里入参的类型为com.github.pagehelper.Page

  <select id="findByPaging" resultMap="BaseResultMap" parameterType="map">
    select
    *
    from employee
    where 1=1
    <if test="age != null">
      and age = #{age}
    </if>
  </select>

4.controller层调用接口

EmployeeController.java中新增findBypaging方法

   @ApiOperation(value = "分页查询")
    @GetMapping("findBypaging")
    public ResultMsg findByPaging(Integer age,Integer pageNum, Integer pageSize){ 
   
        PageHelper.startPage(pageNum,pageSize);
        Map param = new HashMap();
        param.put("age",age);
        Page<Employee> data = employeeMapper.findByPaging(param);
        JSONObject result = new JSONObject();
        result.put("employees",data);
        result.put("pages",data.getPages());
        result.put("total",data.getTotal());
        return ResultMsg.getMsg(result);
    }

ps:这里分页查询参数的传递方式和普通的查询是一样的,map的方式添加就可以了

5.测试

编写一个测试用例,向数据库中批量插入200个员工数据

@RunWith(SpringRunner.class)
@SpringBootTest
public class HrefApplicationTests { 

@Autowired
private EmployeeMapper employeeMapper;
@Autowired
private IdWorker idWorker;
public static String getRandomStr(int length) { 

String base = "abcdefghijklmnopqrstuvwxyz0123456789";
int randomNum;
char randomChar;
Random random = new Random();
// StringBuffer类型的可以append增加字符
StringBuffer str = new StringBuffer();
for (int i = 0; i < length; i++) { 

// 可生成[0,n)之间的整数,获得随机位置
randomNum = random.nextInt(base.length());
// 获得随机位置对应的字符
randomChar = base.charAt(randomNum);
// 组成一个随机字符串
str.append(randomChar);
}
return str.toString();
}
Employee createRadomEmployee()
{ 

Employee employee = new Employee();
employee.setAddress("北新街" + getRandomStr(5));
employee.setAge("22");
employee.setGender(new Short("1"));
employee.setCreateTime(new Date());
employee.setName(getRandomStr(10));
employee.setId(idWorker.nextId());
return employee;
}
@Test
public void insertEmployees() { 

for(int i=0;i<402;i++)
{ 

employeeMapper.insert(createRadomEmployee());
}
}
}

执行后,看到测试数据已经建好

SpringBoot+Mybatis实现分页查询[通俗易懂]

打开swagger,输入pageNum和pageSize,点击Try it out

SpringBoot+Mybatis实现分页查询[通俗易懂]

返回结果如下:可以看到总数据为402,总页数为134,一共返回了3条数据

{ 

"data": { 

"total": "402",
"pages": 134,
"employees": [
{ 

"address": "北新街4wf91",
"age": "22",
"createTime": 1558951333000,
"deptId": 0,
"gender": 0,
"id": "317724116919799808",
"name": "69wcpvii46"
},
{ 

"address": "北新街8voe8",
"age": "22",
"createTime": 1558951333000,
"deptId": 0,
"gender": 0,
"id": "317724117007880192",
"name": "9sicl9xer4"
},
{ 

"address": "北新街tbq90",
"age": "22",
"createTime": 1558951333000,
"deptId": 0,
"gender": 0,
"id": "317724117309870080",
"name": "u9zxm84sqo"
}
]
},
"result": "SUCCESS",
"resultCode": 200,
"resultMsg": ""
}

总结

可以看到在spring boot中使用pageHealper插件进行分页查询很简单,包括如下3步:

  1. 导入插件依赖或jar包
  2. 在Mapper中添加接口,返回类型为Page<实体类型>,本例为Page
  3. 在xml中添加查询语句,入参的类型为com.github.pagehelper.Page

项目源码

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/137207.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 怎么判断草图完全约束_算法基础课acwing下载

    怎么判断草图完全约束_算法基础课acwing下载爱丽丝和鲍勃正在玩以下游戏。首先,爱丽丝绘制一个 N 个点 M 条边的有向图。然后,鲍勃试图毁掉它。在每一步操作中,鲍勃都可以选取一个点,并将所有射入该点的边移除或者将所有从该点射出的边移除。已知,对于第 i 个点,将所有射入该点的边移除所需的花费为 W+i,将所有从该点射出的边移除所需的花费为 W−i。鲍勃需要将图中的所有边移除,并且还要使花费尽可能少。请帮助鲍勃计算最少花费。输入格式第一行包含 N 和 M。第二行包含 N 个正整数,第 i 个为 W+i。第三行包含 N 个正整数,第.

  • slam关键技术_深度技术还做系统吗

    slam关键技术_深度技术还做系统吗本文由图像处理知识库整理SLAM(simultaneouslocalizationandmapping),也称为CML(ConcurrentMappingandLocali…

  • 让未登录的用户跳转到登录页面_网页登录后又跳转登录页面

    让未登录的用户跳转到登录页面_网页登录后又跳转登录页面开发使用的是SpringBoot和Shiro,然后遇到了这个问题,记录一哈。1.处理ajax异步请求:如果不想每个ajax都判断返回数据,然后进行未登录跳转的话,可以修改JQuery的默认设置(c

  • jboss安装与配置_andrax安装出错

    jboss安装与配置_andrax安装出错一.              下载与安装JBoss在本文中,我们下载的JBoss版本为:4.2.1.GA。下载地址:http://www.jboss.org/jbossas/downloads/在如上的下载页中下载JBoss-4.2.1.GA.zip文件。下载完成后,将其解压缩后即可完成安装,解压缩后将其放置到一个不带空格的目录(若目录带有空格,例如:C:

  • linux中一个tomcat的一个端口可以启动多个工程(工程名要不一样)

    linux中一个tomcat的一个端口可以启动多个工程(工程名要不一样)

  • python的安装包安装教程_如何安装python

    python的安装包安装教程_如何安装pythonpip是Python包管理工具,该工具提供了对Python包的查找、下载、安装、卸载的功能。一般情况pip对应的是Python2.7,pip3对应的是Python3.x。部分Linux发行版可直接用包管理器安装pip,如Debian和Ubuntu:sudoapt-getinstallpython-pip安装包pipinstallSomePackage…

    2022年10月30日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号