学会Mybatis框架:一文掌握MyBatis与GitHub插件分页的完美结合【三.分页】

news2024/11/23 22:18:58

🥳🥳Welcome Huihui's Code World ! !🥳🥳

接下来看看由辉辉所写的关于Mybatis的相关操作吧

目录

🥳🥳Welcome Huihui's Code World ! !🥳🥳

一.Mybatis分页

1. Mybatis自带分页

2.插件分页

二.特殊字符的操作

1.使用CDATA区间

2.实体引用

三.结果集的处理 


 其实Mybatis本身是有分页的功能的,但是我们还是需要重写其中的分页,这是因为Mybatis的分页功能很弱,它是基于内存的分页(查出所有记录再按偏移量offset和边界limit取结果),在大数据量的情况下这样的分页基本上是没有用的

一.Mybatis分页

1. Mybatis自带分页

 //BookMapper.xml

<select id="selectPage" parameterType="map" resultType="com.wh.model.Book">
    SELECT * FROM t_mvc_book
    LIMIT #{offset}, #{limit}
</select>
 //BookMapper
List<Book> selectPage(Map map);
//BookBiz

List<Book> selectPage(Map map);
 //BookBizImpl

@Override
    public List<Book> selectPage(Map map) {

        return bookMapper.selectPage(map);
    }
 @Test
    public void selectPage() {
        Map map=new HashMap();
        map.put("bname","%圣墟%");
        map.put("offset",10);
        map.put("limit",10);
        bookBiz.selectPage(map).forEach(System.out::println);
    }

结果

上面我们也说了,这样的代码会使得分页效率低下,我们可以用到插件,这样可以使得分页的效率更高

2.插件分页

首先将依赖导入pom.xml

<!--******************************github分页插件*******************************-->
    <dependency>
      <groupId>com.github.pagehelper</groupId>
      <artifactId>pagehelper</artifactId>
      <version>5.1.2</version>
    </dependency>

Mybatis.cfg.xml配置拦截器(注意要符合dtd约束!!

 <plugins>
        <!-- 配置分页插件PageHelper, 4.0.0以后的版本支持自动识别使用的数据库 -->
        <plugin interceptor="com.github.pagehelper.PageInterceptor">
        </plugin>
    </plugins>

 BookMapper.xml


  <select id="listPager" resultType="com.wh.model.Book" parameterType="java.lang.String">
  select * from t_mvc_book where bname like concat(concat('%',#{bname}),'%')
</select>

之后的操作跟上面是一样的,我们现在直接来看结果吧

二.特殊字符的操作

在 Mybatis 中,特殊字符是指在 SQL 语句中使用的具有特殊含义的字符。例如,单引号(')用于表示字符串,双引号(")用于表示标识符或关键字,反斜杠(\)用于转义特殊字符等,但特殊字符有时会引发一些问题...我们可以来看一下到底会引起什么问题

BookMapper.xml

 <select id="test" resultType="com.wh.model.Book" parameterType="java.util.Map">
    select * from t_mvc_book where bname like concat(concat('%',#{bname}),'%') and price < #{max}
  </select>

测试之后便可得到结果

 可以看到,这里是有告诉你出现了错误的,在这里我们有两种方式进行解决

1.使用CDATA区间

<select id="test" resultType="com.wh.model.Book" parameterType="java.util.Map">
    select * from t_mvc_book where bname like concat(concat('%',#{bname}),'%') <![CDATA[  and  price < #{max}]]>
  </select>

2.实体引用

实体引用是指在 XML 文档中,对于某个标记,如果该标记的值中包含一个实体名称,那么这个实体名称就应该用实体引用的方式来表示。实体引用的格式为 &entityName;,其中 & 符号表示实体引用的开始,entityName 表示实体名称。例如,&lt; 表示小于号 <&gt; 表示大于号 > 等,大家有需要的也可以去网上自行查找相关的实体引用

<select id="test" resultType="com.wh.model.Book" parameterType="java.util.Map">
    select * from t_mvc_book where bname like concat(concat('%',#{bname}),'%')  and  price &lt; #{max}
  </select>

三.结果集的处理 

在正式开发中,结果集的处理,常常会用一个专门的类来存放

在 Java 开发中,VO 和 DTO 都是数据传输对象

VO(View Object)是视图层传输的对象,主要用于展示层,它将页面或组件的所有数据封装起来

DTO(Data Transfer Object)是服务层传输的对象,主要用于业务逻辑层和表示层之间,它只包含需要传递的数据,不包含业务逻辑

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

职业技术培训内容介绍

泰迪职业技术培训包括&#xff1a;Python技术应用、大数据技术应用、机器学习、大数据分析 、人工智能技术应用。 职业技术培训-Python技术应用 “Python技术应用工程师”职业技术认证是由工业和信息化部教育与考试中心推出一套专业化、科学化、系统化的人才考核标准&…

8.24随笔记录科研灵感

在B站浏览关于人脸3D的视频&#xff0c;无意看到这一部分“结构光-深度图信息” 【巧的是这也是微软的模型】 就想到了自己的V4.3版本的算法里面估计距离其实用的也是结构光&#xff08;红光&#xff09;来估测距离&#xff0c;而且目前水下图像处理领域并没有采用这个方法&am…

【DC】逻辑综合实战

DC实战 0. 学习目标1. Design1.1 Design Schematic1.2 Design Specification 2. 配置文件和约束文件2.1 配置文件(1) common_setup.tcl 文件(2) dc_setup.tcl 文件(3) .synopsys_dc.setup 文件 2.3 启动工具查看单元库信息(1) 查看目标库的时间单位 2.3 设计约束文件(1) 时钟约…

洗涤护理门店小程序搭建全攻略:数字化转型的起点

在现代社会中&#xff0c;人们越来越注重便捷和个性化的服务体验。而随着智能手机的普及&#xff0c;小程序成为了商家与用户之间沟通的重要桥梁。在这篇文章中&#xff0c;将介绍如何使用第三方小程序制作平台搭建一个个性化干洗店洗护小程序。 首先&#xff0c;我们需要注册并…

ORB-SLAM2报错集合(数据集测试系列1)

目录 错误1 错误2 错误3 错误4 错误5 错误6 错误7 错误8 TUM-RGBD测试 KITTI测试 EuRoC测试 写在前面~ ORB-SLAM2 github链接&#xff1a;GitHub - electech6/ORB_SLAM2_detailed_comments: Detailed comments for ORB-SLAM2 with trouble-shooting, key formula …

单个无人机三维路径规划问题及其建模

单个无人机三维路径规划问题及建模如下&#xff1a; 参考文献&#xff1a; [1]胡观凯,钟建华,李永正,黎万洪.基于IPSO-GA算法的无人机三维路径规划[J].现代电子技术,2023,46(07):115-120

Grafana Dashboard 备份方案

文章目录 Grafana Dashboard 备份方案引言工具简介支持的组件要求配置备份安装使用 pypi 安装grafana备份工具配置环境变量使用Grafana Backup Tool 进行备份恢复备份 Grafana Dashboard恢复 Grafana Dashboard结论Grafana Dashboard 备份方案 引言 每个使用 Grafana 的同学都…

vue离线缓存资源文件

本文章主要是解决大文件,实时请求资源浪费网络资源的问题 从而有效的将解决用户体验的问题 话不多说上才艺 ⬇️⬇️⬇️⬇️⬇️⬇️⬇️ 找到项目中的 index.html 文件,并在 html 标签中加入 manifest"manifest.appcache" 安装 appcache-manifest 包 npm ins…

深入浅出理解相机标定原理

重要说明&#xff1a;本文从网上资料整理而来&#xff0c;仅记录博主学习相关知识点的过程&#xff0c;侵删。 一、参考资料 微信公众号&#xff1a;计算机视觉life 专栏&#xff1a;#相机标定 Camera Calibration 张正友标定法-完整学习笔记-从原理到实战 二、相机标定相…

C语言刷题训练DAY.12

1.统计成绩 解题思路&#xff1a; 这里我们设置两个变量记录最大值和最小值&#xff0c;再用一个sum统计分数总和即可。 解题代码&#xff1a; #include<stdio.h> int main() {int n 0;scanf("%d", &n);double arr[100] { 0 };int i 0;//最高分double …

UVM Heartbeat机制

1. 前言 在硬件电路中&#xff0c;为了使系统在异常情况下能自动复位&#xff0c;一般都需要引入看门狗(Watchdog)。看门狗其实就是一个定时器电路。当看门狗启动后&#xff0c;计数器开始自动计数&#xff0c;经过一定时间&#xff0c;如果没有被清零&#xff0c;计数器溢出就…

谁为软件质量负责?

如果我们直接问自己以下问题——谁负责软件质量&#xff0c;我们首先想到的就是——当然是测试人员&#xff01;但这并不像看起来那么容易。 IT领域有几个特点&#xff0c;总是发生在软件测试的最后阶段&#xff0c;就在它发布之前。它们使我们不仅从软件的技术质量保证的角度…

学习JAVA打卡第四十一天

字符串与字符数组、字节数组 ⑴字符串与字符数组 String类的构造方法String&#xff08;char a[]&#xff09;和String&#xff08;char a[]&#xff09;,int offset,int length,分别用数组a中的全部字符和部分字符创建string对象。 String类也提供将string对象的字符序列存…

vray for Cinema 4D如何创建照片级真实室内效果?

在V-Ray for Cinema 4D中渲染 3D室内设计一开始可能会很困难&#xff0c;但您投入的努力总会得到回报。无论您的技术水平和创意眼光如何&#xff0c;在 V-Ray 中创建室内设计时都需要考虑很多事项。 在这篇博文中&#xff0c;我们将分享一些最佳实践&#xff0c;帮助您创建令人…

12-总结-从 0 开始搭建框架

项目结构: 一. 安装第三方库 # 下载源: https://pypi.tuna.tsinghua.edu.cn/simple/pip3 install flask2.3.2 pip3 install jinja23.1.2 pip install pymysql # 保持持久化pip install flask-script2.0.3 # 管理应用程序 pip install flask-sqlalchemy3.0.3 # 实现ORM映射…

高等数学之不定积分

由导函数推原函数就是不定积分 只是一个&#xff01; 记得常数C!!! 不定积分的几何含义

基于TechGrow实现Hexo引流微信公众号

首发博客地址 https://blog.zysicyj.top/ # 前言 Hexo 博客建议安装 hexo-readmore (opens new window) 插件&#xff0c;将 TechGrow (opens new window) 的免费微信公众号引流工具整合到博客中&#xff0c;用户扫码关注微信公众号后可以解锁全站文章&#xff0c;让微信公众号…

基于乌燕鸥算法优化的BP神经网络(预测应用) - 附代码

基于乌燕鸥算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码 文章目录 基于乌燕鸥算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码1.数据介绍2.乌燕鸥优化BP神经网络2.1 BP神经网络参数设置2.2 乌燕鸥算法应用 4.测试结果&#xff1a;5.Matlab代…

数字的画笔:数据可视化的魅力与实用性

数据可视化是一种强大的工具&#xff0c;用于将复杂的数据和信息以图形化的方式呈现&#xff0c;以便人们更容易理解、分析和发现其中的模式和趋势。通过图表、图形和其他可视元素&#xff0c;数据可视化可以帮助我们将抽象的数字转化为有意义的视觉呈现&#xff0c;从而提升了…

QT6安装完成后,再安装低版本的MinGW或其他组件方式

首先进入点击安装的uinstall Qt 并不是真的卸载 通过下面几步 1&#xff0c;首先登录自己账户 2&#xff0c;然后进入欢迎中&#xff0c;点击“添加和移除组件” 3&#xff0c;然后检索自己需要的安装内容