摄影师招聘网站,东莞外贸网站建站,wordpress 无法访问文章,计算机网络技术专业目录
一、PageHelper介绍
二、PageHelper使用
1. 导入pom依赖
2. Mybatis.cfg.xml 配置拦截器
3. 配置 Mapper.xml
4. 编写测试
三、特殊字符处理
1. 使用转义字符
2. 使用CDATA 区段 一、PageHelper介绍 PageHelper 是 Mybatis 的一个插件#xff0c;这里就不扯了这里就不扯了就是为了更加便捷的进行分页查询。
官方网址https://pagehelper.github.io/ PageHelper插件的优点
物理分页支持常见的 12 种数据库Oracle,MySql,MariaDB,SQLite,DB2,PostgreSQL,SqlServer 等...支持多种分页方式支持常见的RowBounds(PageRowBounds)PageHelper.startPage 方法调用Mapper 接口参数调用。 QueryInterceptor 规范使用 QueryInterceptor 规范开发插件更轻松。 二、PageHelper使用
1. 导入pom依赖 dependencygroupIdcom.github.pagehelper/groupIdartifactIdpagehelper/artifactIdversion5.2.0/version/dependency 2. Mybatis.cfg.xml 配置拦截器 pluginsplugin interceptorcom.github.pagehelper.PageInterceptor//plugins必须配置在environments上面不然会报错。 正确实例 其他配置
plugins!-- com.github.pagehelper为PageHelper类所在包名 --plugin interceptorcom.github.pagehelper.PageHelper!-- 支持的方言 oracle,mysql,mariadb,sqlite,hsqldb,postgresql,db2,sqlserver,informix,h2,sqlserver2012 --property namedialect valuemysql/!-- 该参数默认为false --!-- 设置为true时会将RowBounds第一个参数offset当成pageNum页码使用 --!-- 和startPage中的pageNum效果一样--property nameoffsetAsPageNum valuetrue/!-- 该参数默认为false --!-- 设置为true时使用RowBounds分页会进行count查询 --property namerowBoundsWithCount valuetrue/!-- 设置为true时如果pageSize0或者RowBounds.limit 0就会查询出全部的结果 --!-- 相当于没有执行分页查询但是返回结果仍然是Page类型--property namepageSizeZero valuetrue/!-- 3.3.0版本可用 - 分页参数合理化默认false禁用 --!-- 启用合理化时如果pageNum1会查询第一页如果pageNumpages会查询最后一页 --!-- 禁用合理化时如果pageNum1或pageNumpages会返回空数据 --property namereasonable valuefalse/!-- 3.5.0版本可用 - 为了支持startPage(Object params)方法 --!-- 增加了一个params参数来配置参数映射用于从Map或ServletRequest中取值 --!-- 可以配置pageNum,pageSize,count,pageSizeZero,reasonable,orderBy,不配置映射的用默认值 --!-- 不理解该含义的前提下不要随便复制该配置 --property nameparams valuepageNumpageHelperStart;pageSizepageHelperRows;/!-- 支持通过Mapper接口参数来传递分页参数 --property namesupportMethodsArguments valuefalse/!-- always总是返回PageInfo类型,check检查返回类型是否为PageInfo,none返回Page --property namereturnPageInfo valuenone//plugin
/plugins 3. 配置 Mapper.xml
博主设置的类型是map集合可根据需求自行修改。 select idlistPager resultTypejava.util.Map parameterTypejava.util.Mapselect * from t_mvc_book where bname like concat(concat(%,#{bname}),%)/select
1. 生成一个方法接口 2. 编写service层接口和继承接口类......省略 4. 编写测试
package com.ycxw.demo;import com.github.pagehelper.PageHelper;
import com.ycxw.biz.BookBiz;
import com.ycxw.biz.impl.BookBizImpl;
import com.ycxw.mapper.BookMapper;
import com.ycxw.utils.SessionUtil;
import org.apache.ibatis.session.SqlSession;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;import java.util.HashMap;
import java.util.Map;/*** author 云村小威* site blog.csdn.net/Justw320* create 2023-08-20 18:05*/
public class CURDTest {private BookBiz bookBiz;private SqlSession sqlSession;Beforepublic void before() {System.out.println(执行测试方法之前会执行的初始化代码块方法);//获取一个数据库会话对象并将其赋值给sqlSession变量this.sqlSession SessionUtil.openSession();//实例化业务逻辑层BookBizImpl book new BookBizImpl();//获取接口实例BookMapper mapper this.sqlSession.getMapper(BookMapper.class);book.setBookMapper(mapper);//最后赋值给bookBiz接口便于对数据库进行增删改查操作this.bookBiz book;}Afterpublic void after() {System.out.println(执行测试方法之后的后执行的方法);//提交事务this.sqlSession.commit();}Testpublic void test(){Map map new HashMap();map.put(bname,圣墟);PageHelper.startPage(1, 10);bookBiz.listPager(map).forEach(System.out::println);}
}通过这个方法可实现分页 PageHelper.startPage(页码, 数据量); 当然该演示只是最简单的方法可通过方法传递动态修改页码数据等等。更多用法欢迎大佬们在评论区留言 三、特殊字符处理 在mybatis中我们经常用到特殊字符动态拼接语句如经常使用到 大于(,)、小于(,)、不等于( ,!)符号。Mybatis使用的 *.xml文件格式需要在尖括号进行相关的转义或者使用 CDATA 区段。 1. 使用转义字符
特殊字符转义字符lt;gt;amp;quot;’apos;lt;gt; 示例 select idlistPager resultTypejava.util.Map parameterTypejava.util.Mapselect * from t_mvc_book where price lt; 9 and price gt; 20/select 2. 使用CDATA 区段
![CDATA[ ]]是xml语法在![CDATA[ ]]内部的所有内容都会被解析器忽略不进行转义。所以在xml中这是一种通用方案。
特殊字符![CDATA[ ]]![CDATA[]]![CDATA[]]![CDATA[]]![CDATA[]]’![CDATA[]]![CDATA[]]![CDATA[]]!![CDATA[!]] 示例 select idlistPager resultTypejava.util.Map parameterTypejava.util.Mapselect * from t_mvc_book where ![CDATA[ price #{price} and #{price} ! 0 ]]/select