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

🥳🥳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_bookLIMIT #{offset}, #{limit}
</select>
 //BookMapper
List<Book> selectPage(Map map);
//BookBizList<Book> selectPage(Map map);
 //BookBizImpl@Overridepublic List<Book> selectPage(Map map) {return bookMapper.selectPage(map);}
 @Testpublic 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.hqwc.cn/news/81421.html

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

相关文章

单片机(二)使用位移 让灯亮

一&#xff1a;硬件电路 P2 口&#xff1a; P2.0~ P2.7 是这些 I0 口 LED 阳极接 电源 &#xff0c; P20 口 为低电平 可以让 LED灯 亮 二&#xff1a;软件实现部分 两种 ① 通过循环 来展示从左 到右 #include "reg52.h"#define LED_PORT P2 // 定义单片机的P2端…

Python土力学与基础工程计算.PDF-土的三项组成

5.3 Python求解 Python 求解代码如下&#xff1a; 1. # 定义已知参数 2. G_s 2.7 # 比重 3. w 0.2 # 含水量 4. e 0.6 # 孔隙比 5. gamma_w 9.81 # 水的重度 6. 7. # 根据公式计算饱和度 8. S_r G_s * w / e 9. print("饱和度为", S_r) 10. 11.…

OpenEuler 安装mysql

下载安装包 建议直接使用在openEuler官方编译移植过的mysql-5.7.21系列软件包 参考&#xff1a;操作系统迁移实战之在openEuler上部署MySQL数据库 | 数据库迁移方案 | openEuler社区官网 MySQL 5.7.21 移植指南&#xff08;openEuler 20.03 LTS SP1&#xff09; | 数据库移植…

Element Plus el-table 数据为空时自定义内容【默认为 No Data】

1. 通过 Table 属性设置 <div class"el-plus-table"><el-table empty-text"暂无数据" :data"tableData" style"width: 100%"><el-table-column prop"date" label"Date" width"180" /&g…

微短剧赛道风口下的一站式点播解决方案

微短剧行业正风生水起。 一种全新的剧集模式正迅速崛起&#xff0c;并引起广泛关注。 从线下电影院的“巨幕”到PC端“网络大电影”&#xff0c;从“长视频”再到如今移动端1-3分钟的“微短剧”&#xff0c;影视行业在过去几年经历了一场深刻又显著的变化。 微短剧&#xff0…

使用Nodejs创建简单的HTTP服务器,借助内网穿透工具实现公网访问的方法分享

文章目录 前言1.安装Node.js环境2.创建node.js服务3. 访问node.js 服务4.内网穿透4.1 安装配置cpolar内网穿透4.2 创建隧道映射本地端口 5.固定公网地址 前言 Node.js 是能够在服务器端运行 JavaScript 的开放源代码、跨平台运行环境。Node.js 由 OpenJS Foundation&#xff0…

【生态经济学】利用R语言进行经济学研究技术——从数据的收集与清洗、综合建模评价、数据的分析与可视化、因果推断等方面入手

查看原文>>>如何快速掌握利用R语言进行经济学研究技术——从数据的收集与清洗、综合建模评价、数据的分析与可视化、因果推断等方面入手 近年来&#xff0c;人工智能领域已经取得突破性进展&#xff0c;对经济社会各个领域都产生了重大影响&#xff0c;结合了统计学、…

HTTPS代理搭建技巧分享

今天我们来分享一下如何搭建一个能够实现中间人 检测和防护的HTTPS代理。保护我们的网络通信安全是至关重要的&#xff0c;让我们一起学习如何构建一个安全可靠的HTTPS代理吧&#xff01; 什么是中间人 &#xff1f; 首先&#xff0c;让我们来了解一下什么是中间人 。中间人 是…

数据结构 | 堆

本文简要总结堆的概念。 更新&#xff1a;2023 / 8 / 20 数据结构 | 堆 堆概念方法插入步骤 删除步骤 示例大根堆堆插入删除堆排序 代码实现Python大根堆1.2. heapq 小根堆1.2. heapq 参考链接 堆 概念 如果谈到堆排序&#xff0c;那么必然要说说什么是 大根堆 max heap 和 …

UVM Heartbeat机制

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

投影标杆,旗舰实力,极米投影仪Z7X为用户创造影院级体验

2023年&#xff0c;在彩电消费市场复苏疲软的背景下&#xff0c;智能投影这个显示新品类却持续走红。今年第一季度&#xff0c;极米科技推出Z系列全新一代产品极米Z7X&#xff0c;和极米Z6相比&#xff0c;在保持轻薄体积不变的情况下将亮度提升了83%&#xff0c;达到600CCB 流…

MAC电脑外放没有声音解决方案

烦人呐&#xff0c;我的mac外接显示屏幕&#xff0c;显示器没有音频输出&#xff0c;需要mac笔记本的音频输出&#xff0c;但是经常打开后&#xff0c;mac没有声音输出&#xff0c;需要重启电脑才能生效。亲测一下方法有效&#xff0c;请参考&#xff1a; 文章目录 一、短期方案…