企业级真实应用利用Mybatis-Plus进行分页查询处理

怎么导入依赖我在之前的文章里边有说过不理解的可以看看

你应该懂点Mybatis-plus,真的好用

1:了解Page<T>类的使用 

首先我们需要使用到Page类 ,建立一个Page类,泛式类型中放入我们需要输出的类,是列表的话就放入列表。

MyBatis Plus 是 MyBatis 的增强包装库,MyBatis 是一种流行的 Java 应用程序持久性框架。MyBatis Plus 提供了额外的特性和实用程序来简化数据访问层代码的开发。

在MyBatis Plus中,该类Page<T>是用于分页的通用类。它代表一个数据页面,并提供检索有关当前页面的信息以及执行与分页相关的操作的方法。

Page<T>下面是MyBatis Plus 中类的一些常用方法和属性:

  1. getCurrent():返回当前页码。
  2. getSize():返回每页的记录数。
  3. getRecords():返回当前页面的记录列表。
  4. getTotal():返回所有页面的记录总数。
  5. getPages():返回总页数。
  6. hasNext():true如果有下一页则返回,false否则返回。
  7. hasPrevious()true如果有上一页则返回,false否则返回。
  8. next():移至下一页并返回一个新Page<T>对象。
  9. previous():移至上一页并返回一个新Page<T>对象。
  10. convert(Function<? super T, ? extends U> mapper):使用提供的映射函数转换当前页面上的记录。
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;public IPage<User> getUsersByPage(int pageNumber, int pageSize) {Page<User> page = new Page<>(pageNumber, pageSize);IPage<User> userPage = userMapper.selectPage(page, null);List<User> userList = userPage.getRecords();long total = userPage.getTotal();int currentPage = userPage.getCurrent();int pageSize = userPage.getSize();int totalPages = userPage.getPages();boolean hasNext = userPage.hasNext();boolean hasPrevious = userPage.hasPrevious();return userPage;
}

2.了解BaseMapper<T>


BaseMapper<T>MyBatis Plus 提供的一个接口,作为对T实体进行 CRUD 操作的基础映射器。它包括用于基本数据库操作(例如插入、更新、删除和查询记录)的常用方法。

以下是该接口提供的一些常用方法BaseMapper<User>

  • int insert(T entity): 将新记录插入到指定实体的数据库中。
  • int insertBatch(List<T> entityList):将指定实体列表的多条记录插入数据库。
  • int updateById(T entity):使用主键更新指定实体在数据库中的记录。
  • int deleteById(Serializable id):根据主键从数据库中删除记录。
  • T selectById(Serializable id):根据主键从数据库中检索单个记录。
  • List<T> selectBatchIds(Collection<? extends Serializable> idList):根据主键值列表从数据库中检索多条记录。
  • List<T> selectByMap(Map<String, Object> columnMap):根据列名和值的映射从数据库中检索记录。
  • IPage<T> selectPage(IPage<T> page, @Param(Constants.WRAPPER) Wrapper<T> queryWrapper):执行分页查询并返回一页结果。

BaseMapper<User>接口提供这些方法作为默认实现,这意味着您可以直接使用它们,而无需编写任何额外的代码。但是,如果需要修改它们的行为,您也可以在自定义映射器接口中重写这些方法。

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;@Mapper
public interface UserMapper extends BaseMapper<User> {// Custom query methodsUser selectById(Long id);List<User> selectByUsername(String username);List<User> selectByAgeRange(@Param("minAge") int minAge, @Param("maxAge") int maxAge);// Custom update methodint updateUsernameById(@Param("id") Long id, @Param("username") String username);// Custom delete methodint deleteByUsername(String username);}

通过扩展BaseMapper<T>,您的自定义映射器接口(例如 )UserMapper继承了这些方法,并且可以另外定义特定于User实体或应用程序要求的自定义方法。

使用BaseMapper<User>作为映射器的基本接口提供了一种在实体上执行基本 CRUD 操作的便捷方法,User而无需显式编写 SQL 查询。MyBatis Plus根据方法调用和注释生成SQL语句,使数据库操作更简单、更高效。

3:Mybatis-Plus使用PageHelper分页插件

第一步:引包

<!--SpringBoot框架必须引入此依赖--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.1</version></dependency<!--需要网页展示的需要加上这个依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--为什么不直接使用mybatis直接的依赖,需要是使用springboot那一套依赖呢,因为需要进行springboot跟mybatis适配所以不用下边的这个依赖--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus</artifactId></dependency>

第二步:配置文件

使用mybatis下的PageHelper插件,不是只引入依赖就可以了。还需要在配置文件里边进行一系列的配置。

1:启动项配置文件

mybatis-plus:mapper-locations: classpath*:sql/**/*Mapper.xmlconfiguration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpldatabase:pageHelper:helperDialect: mysqlreasonable: truesupportMethousArguments: trueparams: count=countSqlmybatis:mapper-locations: classpath*:sql/**/*Mapper.xmlconfiguration:database-id: ${mybatis.database.provider.type:mysql}log-impl: org.apache.ibatis.logging.stdout.StdOutImpldatabase:pageHelper:helperDialect: mysqlreasonable: truesupportMethousArguments: trueparams: count=countSql

数据逻辑里边使用的是mybatis-plus就是用它的配置,使用mybatis就使用mybatis的配置。

第三步:使用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/191548.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023年亚太杯数学建模思路 - 案例:FPTree-频繁模式树算法

文章目录 赛题思路算法介绍FP树表示法构建FP树实现代码 建模资料 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 算法介绍 FP-Tree算法全称是FrequentPattern Tree算法&#xff0c;就是频繁模式树算法&#…

任意注册漏洞

目录 一漏洞介绍 二实战演示 三漏洞修复 本文由掌控安全学院 - 小博 投稿 一漏洞介绍 1.未验证邮箱/手机号 情景&#xff1a;应用为了方便用户记录用户名&#xff0c;使用邮箱和手机号作为用户名&#xff08;因此很多应用在注册的时候就要求用户填写&#xff0c;多数时候…

安卓:打包apk时出现Execution failed for task ‘:app:lintVitalRelease

Execution failed for task :lintVitalRelease 程序可以正常运行&#xff0c;但是打包apk的时候报Execution failed for task ‘:app:lintVitalRelease导致打包失败&#xff0c;原因是执行lintVitalRelease失败了&#xff0c;存在错误。解决办法&#xff1a;在app模块的build.…

万宾科技内涝积水监测仪效果,预警城市积水

当城市之中出现强降雨或者大暴雨&#xff0c;可能会导致雨水不断堆积到城市排水管网之中&#xff0c;可能还会淹没城市的排水系统时&#xff0c;这种现象被称为城市之中的内涝&#xff0c;并且在许多城市之中内涝问题日益引起人们的关注。 内涝积水监测仪的出现成为了希望的灯塔…

Android Studio的代码笔记--JSON解析学习2

JSON学习2 生成JSON解析JSON java解析json字符串和合成json字符串 json字符串 {"type":"getConfig","ip":"192.168.1.100"}使用 String ss groupJS("Config","192.168.1.100"); splitJS(ss);回显 I/lxh: group…

arcgis--NoData数据处理

方法一&#xff1a;利用【栅格计算器】可以对NoData的值进行修改。【Spatial Analyst工具】-【地图代数】-【栅格计算器】&#xff0c;将NoData修改为某一个值。 方法二&#xff1a;先对原始数据进行重分类&#xff0c;分成1类&#xff0c;将NoData赋值为2,。然后&#xff0c;将…

2023.11.11通过html内置“required-star“添加一个红色的星号来表示必填项

2023.11.11通过html内置"required-star"添加一个红色的星号来表示必填项 在HTML中&#xff0c;可以使用标签来为元素添加说明。同时可以通过添加一个红色的星号来表示必填项。 <!DOCTYPE html> <html lang"en"> <head><meta charse…

GoLong的学习之路,进阶,语法之并发(并发错误处理)补充并发三部曲

这篇文章主要讲的是如何去处理并发的错误。 在Go语言中十分便捷地开启goroutine去并发地执行任务&#xff0c;但是如何有效的处理并发过程中的错误则是一个很棘手的问题。 文章目录 recovererrgroup recover 哦对&#xff0c;似乎没写错误处理的文章。后面补上。 首先&…

一文懂得电源模块过温保护测试方法 ate测试软件助力测试

过温保护测试是电源模块保护功能测试项目之一&#xff0c;也是电源模块测试的重要测试指标&#xff0c;以保证电源模块过温保护功能正常&#xff0c;确保电源模块不受损坏。用ate测试软件测试电源模块过温保护&#xff0c;不仅可以保证测试结果的准确性&#xff0c;还可以多维度…

[Linux] dns域名解析服务

一、DNS 1.1 DNS简介 域名解析&#xff1a;&#xff08;英文&#xff1a;Domain Name System&#xff0c;缩写&#xff1a;DNS&#xff09;是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库&#xff0c;能够使人更方便地访问互联网。DNS使用udp53和tcp53…

SQLite3 数据库学习(一):数据库和 SQLite 基础

参考引用 SQL 必知必会SQLite 权威指南&#xff08;第二版&#xff09;关系型数据库概述 1. 数据库基础 1.1 什么是数据库 数据库&#xff08;database&#xff09;&#xff1a;保存有组织的数据的容器&#xff08;通常是一个文件或一组文件&#xff09; 可以将其想象为一个文…

C语言仅凭自学能到什么高度?

今日话题&#xff0c;C语言仅凭自学能到什么高度&#xff1f;学习C语言的决定我确实非常推荐&#xff0c;毕竟它是编程领域的“通用工具”&#xff0c;初学者可以尝试并在发现编程的乐趣后制定长期学习计划。至于能够达到何种高度&#xff0c;这实在无法准确回答。即使是经验丰…

NtripShare Mos地铁自动化监测终端盒子硬件设计

自动化监测产品到目前为止做了接近一年&#xff0c;在软件层面上&#xff0c;控制终端软件、平台软件、网平差算法都已解决&#xff0c;硬件盒子始终是心里过不去的坎&#xff0c;最终还是没有耐住性子自己做了一把。 选型如下&#xff1a; 1、主板:瑞芯微RK3568主板。 2、外…

主流接口测试框架对比,究竟哪个更好用

公司计划系统的开展接口自动化测试&#xff0c;需要我这边调研一下主流的接口测试框架给后端测试&#xff08;主要测试接口&#xff09;的同事介绍一下每个框架的特定和使用方式。后端同事根据他们接口的特点提出一下需求&#xff0c;看哪个框架更适合我们。 需求 1、接口编写…

Windows系统下使用docker部署redis

使用虚拟机部署redis&#xff0c;虚拟机很占用电脑资源&#xff0c;所以选择使用docker对redis进行部署。 一、安装docker 安装链接&#xff1a;https://docker.p2hp.com/ 二、配置redis.conf文件 下载配置文件&#xff1a;https://download.redis.io/redis-stable/redis.con…

rabbitMq创建交换机,以及路由键绑定队列教程

创建交换机&#xff1a; 创建队列&#xff1a; 创建路由&#xff0c;绑定到交换机&#xff1a; 补充&#xff1a; 创建新用户后&#xff0c;记得点进用户中&#xff0c;那两个set都点击一下&#xff1b; 还有配置代码连接的时候&#xff0c;连的端口为5672&#xff0c;可不…

【JavaEE】Servlet(创建Maven、引入依赖、创建目录、编写及打包、部署和验证、smart Tomcat)

一、什么是Servlet&#xff1f; Servlet 是一种实现动态页面的技术. 是一组 Tomcat 提供给程序猿的 API, 帮助程序猿简单高效的开发一个 web app 1.1 Servlet能干什么&#xff1f; &#x1f695;允许程序猿注册一个类, 在 Tomcat 收到某个特定的 HTTP 请求的时候, 执行这个类…

Azure 机器学习 - 机器学习中的企业安全和治理

目录 限制对资源和操作的访问网络安全性和隔离数据加密数据渗透防护漏洞扫描审核和管理合规性 在本文中&#xff0c;你将了解可用于 Azure 机器学习的安全和治理功能。 如果管理员、DevOps 和 MLOps 想要创建符合公司策略的安全配置&#xff0c;那么这些功能对其十分有用。 通过…

Linux必备基础命令,JAVA程序员必备

目录 一、了解基本的左侧栏什么意思​编辑 二、ls&#xff0c;ll&#xff08;list&#xff0c;查找目录内容) 三、cd(change directory&#xff0c;切换目录) 小技巧&#xff0c;我们在查找东西的时候&#xff0c;可以使用tab进行智能补全。 四、touch&#xff08;建立文件…

R程序 示例4.3.2版本包 在centos进行编译部署

为了在CentOS上下载和编译R语言4.3.2包&#xff0c;可以按照以下步骤进行操作&#xff1a; 1.首先&#xff0c;需要安装一些必要的依赖项。可以使用以下命令安装它们&#xff1a; sudo yum install -y epel-release sudo yum install -y gcc gcc-c gcc-gfortran readline-dev…