MyBatis的核心技术掌握---分页功能,详细易懂(下)

news/2024/12/22 23:02:18/

目录

一.前言

二.MyBatis 的分页

三.MyBatis 的特殊字符处理


一.前言

        继上篇MyBatis 的文章,我们继续来学习MyBatis吧!!! 上篇的博客链接:           http://t.csdn.cn/5iUEDhttp://t.csdn.cn/5iUED        接下来进入我们的正文吧!!!

二.MyBatis 的分页

         导入pom文件,分页插件,需要借助这些来完成分页

pom.xml配置文件:

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

Mybatis.cfg.xml配置拦截器:

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

配置分页工具类:

package com.zking.Utils;import java.io.Serializable;
import java.util.Map;import javax.servlet.http.HttpServletRequest;public class PageBean implements Serializable {private static final long serialVersionUID = 2422581023658455731L;//页码private int page=1;//每页显示记录数private int rows=10;//总记录数private int total=0;//是否分页private boolean isPagination=true;//上一次的请求路径private String url;//获取所有的请求参数private Map<String,String[]> map;public PageBean() {super();}//设置请求参数public void setRequest(HttpServletRequest req) {String page=req.getParameter("page");String rows=req.getParameter("rows");String pagination=req.getParameter("pagination");this.setPage(page);this.setRows(rows);this.setPagination(pagination);this.url=req.getContextPath()+req.getServletPath();this.map=req.getParameterMap();}public String getUrl() {return url;}public void setUrl(String url) {this.url = url;}public Map<String, String[]> getMap() {return map;}public void setMap(Map<String, String[]> map) {this.map = map;}public int getPage() {return page;}public void setPage(int page) {this.page = page;}public void setPage(String page) {if(null!=page&&!"".equals(page.trim()))this.page = Integer.parseInt(page);}public int getRows() {return rows;}public void setRows(int rows) {this.rows = rows;}public void setRows(String rows) {if(null!=rows&&!"".equals(rows.trim()))this.rows = Integer.parseInt(rows);}public int getTotal() {return total;}public void setTotal(int total) {this.total = total;}public void setTotal(String total) {this.total = Integer.parseInt(total);}public boolean isPagination() {return isPagination;}public void setPagination(boolean isPagination) {this.isPagination = isPagination;}public void setPagination(String isPagination) {if(null!=isPagination&&!"".equals(isPagination.trim()))this.isPagination = Boolean.parseBoolean(isPagination);}/*** 获取分页起始标记位置* @return*/public int getStartIndex() {//(当前页码-1)*显示记录数return (this.getPage()-1)*this.rows;}/*** 末页* @return*/public int getMaxPage() {int totalpage=this.total/this.rows;if(this.total%this.rows!=0)totalpage++;return totalpage;}/*** 下一页* @return*/public int getNextPage() {int nextPage=this.page+1;if(this.page>=this.getMaxPage())nextPage=this.getMaxPage();return nextPage;}/*** 上一页* @return*/public int getPreivousPage() {int previousPage=this.page-1;if(previousPage<1)previousPage=1;return previousPage;}@Overridepublic String toString() {return "PageBean [page=" + page + ", rows=" + rows + ", total=" + total + ", isPagination=" + isPagination+ "]";}
}

        Mapper.xml文件:        

         测试:

三.MyBatis 的特殊字符处理

        要创建一个Dto包,这个是用来传参数的,比如还有一些像:pojo/entity/model 是用来放实体类的VO--view object 是视图对象,是用来展示 java.util.Map还有就是Dto 是用来接受参数的。

Dto 包,来接受分页的开始条目和结束条目的参数:

package com.zking.dto;import com.zking.model.Book;/*** @author yinzi* @create 2023-08-24 15:11*/
public class BookDto extends Book {private float min;private float max;public float getMin() {return min;}public void setMin(float min) {this.min = min;}public float getMax() {return max;}public void setMax(float max) {this.max = max;}}

        xml文件:

 测试:

 总结:

        如果在sql语句中碰到大于,小于符号,就需要像上面那样用<![CDATA[  逻辑代码   ]]> 包裹,或者上面那样也可这样替换:price &gt; #{min} and price &lt; #{max}


http://www.ppmy.cn/news/1057076.html

相关文章

【vue3+elementplus】文件上传

二次封装的el-upload <template><div class"uploadFile"><el-uploadref"upload":action"props.action":accept"props.accept":on-progress"handleProgress":on-preview"handlePreview":on-succes…

七夕学算法

目录 P1031 [NOIP2002 提高组] 均分纸牌 原题链接 : 题面 : 思路 : 代码 : P1036 [NOIP2002 普及组] 选数 原题链接 : 题面 : 思路 : 代码 : P1060 [NOIP2006 普及组] 开心的金明 原题链接 : 题面 : 思路 : 01背包例题 : 代码 : P1100 高低位交换 原题…

(4)将固件加载到没有ArduPilot固件的主板上

文章目录 前言 4.1 下载驱动程序和烧录工具 4.2 下载ArduPilot固件 4.3 使用测试版和开发版 4.3.1 测试版 4.3.2 最新开发版本 4.4 将固件上传到自动驾驶仪 4.5 替代方法 4.6 将固件加载到带有外部闪存的主板上 前言 ArduPilot 的最新版本&#xff08;Copter-3.6, Pl…

Linux系统编程:进程信号的处理

目录 一. 用户态和内核态 1.1 用户态和内核态的概念 1.2 用户态和内核态之间的切换 二. 信号的捕捉和处理 2.1 捕捉信号的时机 2.2 多次向进程发送同一信号 2.3 sigaction 函数 三. 可重入函数和不可重入函数 四. volatile 关键字 五. SIGCHLD信号 5.1 SIGCHLD信号的…

loss.sum.backward()为什么要sum()?

在动手学深度学习中&#xff0c;这样解释的&#xff1a; 当y不是标量时&#xff0c;向量y关于向量x的导数的最自然解释是一个矩阵。 对于高阶和高维的y和x&#xff0c;求导的结果可以是一个高阶张量。 然而&#xff0c;虽然这些更奇特的对象确实出现在高级机器学习中&#xff…

POI groupRow 折叠分组,折叠部分不显示问题

折叠组是什么&#xff1f;如图就是用POI 实现的&#xff0c;代码很简单&#xff1a;sheet.groupRow(开始行&#xff0c;结束行)即可 但是万万没想到&#xff0c;最终实现出的结果&#xff0c;合并的组&#xff0c;有一部分并没有渲染出来&#xff0c;如下图&#xff1a; 因为我…

C语言暑假刷题冲刺篇——day4

目录 一、选择题 二、编程题 &#x1f388;个人主页&#xff1a;库库的里昂 &#x1f390;CSDN新晋作者 &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏✨收录专栏&#xff1a;C语言每日一练 ✨其他专栏&#xff1a;代码小游戏C语言初阶&#x1f91d;希望作者的文章能对你…

十一、hadoop应用

1.上传数据集 27.19.74.143,2015/3/30 17:38,/static/image/common/faq.gif 110.52.250.126,2015/3/30 17:38,/data/cache/style_1_widthauto.css?y7a 27.19.74.143,2015/3/30 17:38,/static/image/common/hot_1.gif 27.19.74.143,2015/3/30 17:38,/static/image/common/hot_2…