MaBatis中的分页插件以及特殊字符处理

简介: MaBatis中的分页插件以及特殊字符处理

一、PageHelper介绍


       PageHelper 是 Mybatis 的一个插件,这里就不扯了,就是为了更加便捷的进行分页查询。

官方网址:MyBatis 分页插件 PageHelper

PageHelper插件的优点:

  1. 物理分页:支持常见的 12 种数据库Oracle,MySql,MariaDB,SQLite,DB2,PostgreSQL,SqlServer 等...
  2. 支持多种分页方式:支持常见的RowBounds(PageRowBounds),PageHelper.startPage 方法调用,Mapper 接口参数调用。
  3. QueryInterceptor 规范:使用 QueryInterceptor 规范,开发插件更轻松。


二、PageHelper使用

1. 导入pom依赖

  <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
            <version>5.2.0</version>
        </dependency>


2. Mybatis.cfg.xml 配置拦截器

    <plugins>
        <plugin interceptor="com.github.pagehelper.PageInterceptor"/>
    </plugins>


注意:必须配置在MyBatis.xml文件中的environments之上,这是框架规定的dtd约束,否则报错

607e1bd8e487481d800a58c527710df4.png


3.配置sql映射文件

我这里使用的返回结果类型和参数类型都是map类型,没必要和我一样,可以自己修改

    <select id="listPager" resultType="java.util.Map" parameterType="java.util.Map">
        select * from t_mvc_book where bname like concat(concat('%',#{bname}),'%')
    </select>


后面的生成接口我就省略了,与上一篇mybatis动态sql是差不多的


4.测试代码

import com.github.pagehelper.PageHelper;
import com.wenhao.oa.impl.DeptImpl;
import com.wenhao.oa.mapper.DeptMapper;
import com.wenhao.oa.model.Dept;
import com.wenhao.oa.model.PageBean;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Before;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
/**
 * @ 用户  liwen
 * @当前日期 2023/8/23
 * @当前项目名称 ssm
 */
public class test {
    public static void main(String[] args) throws IOException {
        InputStream r = Resources.getResourceAsStream("mybatis.cfg.xml");
//        获取sqlsession对象
        SqlSessionFactory build = new SqlSessionFactoryBuilder().build(r);
//
        SqlSession sqlSession = build.openSession(true);
        DeptMapper mapper = sqlSession.getMapper(DeptMapper.class);
        DeptImpl d= new DeptImpl();
        d.setDeptMapper(mapper);
//
//        List<Dept> query = d.query("财务部");
//        System.out.println(query);
//        int wenhao = d.insert(new Dept(7, "wenhao"));
//        System.out.println(wenhao);
        PageBean p= new PageBean();
        p.setPagination(true);
        p.setPage(2);
        p.setRows(2);
        PageHelper.startPage(p.getPage(),p.getRows());
        Map map= new HashMap();
        map.put("name","部");
        System.out.println(d.query1(map));
    }
}


测试结果:

c6f496f86d14477a8eb9e8606696d758.png


三、特殊字符处理


       在mybatis中我们经常用到特殊字符动态拼接语句,如经常使用到 大于(>,>=)、小于(<,<=)、不等于(<> ,!=)符号。Mybatis使用的 *.xml文件格式,需要在尖括号进行相关的转义或者使用 CDATA 区段。


1. 使用转义字符

特殊字符    转义字符

<     &lt;
   &gt;
&    &amp;
&quot;
’    &apos;
<=   &lt;=
>=  &gt;=


示例:

    <select id="listPager" resultType="java.util.Map" parameterType="java.util.Map">
        select * from t_mvc_book where price &lt; 9 and price &gt; 20
    </select>


2. 使用CDATA 区段

<![CDATA[ ]]>是xml语法,在<![CDATA[ ]]>内部的所有内容都会被解析器忽略,不进行转义。所以在xml中这是一种通用方案。


示例:

   <select id="listPager" resultType="java.util.Map" parameterType="java.util.Map">
        select * from t_mvc_book where  <![CDATA[ price > #{price} and #{price} != 0 ]]>
    </select>


目录
相关文章
|
6月前
PageHelper分页插件拼接动态排序语句
PageHelper分页插件拼接动态排序语句
232 0
启用 ESLint 后 解决格式化文档自动添加分号和双引号问题
启用 ESLint 后 解决格式化文档自动添加分号和双引号问题
1149 0
启用 ESLint 后 解决格式化文档自动添加分号和双引号问题
|
1月前
|
前端开发 JavaScript
前端中的“+”连接符,居然有鲜为人知的强大功能!
【10月更文挑战第9天】前端中的“+”连接符,居然有鲜为人知的强大功能!
46 0
前端中的“+”连接符,居然有鲜为人知的强大功能!
|
6月前
|
JavaScript 前端开发
【vue】设计一个表格,增删改查,分页,固定列,特殊字符校验
【vue】设计一个表格,增删改查,分页,固定列,特殊字符校验
36 0
【vue】设计一个表格,增删改查,分页,固定列,特殊字符校验
|
11月前
|
XML Java 数据库连接
Mybatis分页及特殊字符
Mybatis分页及特殊字符
53 0
Mybatis分页及特殊字符
|
11月前
|
XML Java 关系型数据库
MyBatis分页与特殊字符处理
MyBatis分页与特殊字符处理
49 0
|
Python Perl
【python脚本】单行多次正则匹配
【python脚本】单行多次正则匹配
|
SQL Java 数据库连接
mybatis的分页和特殊字符处理
mybatis的分页和特殊字符处理
125 0
|
SQL Java 数据库连接
Mybatis-分页与动态字符
Mybatis-分页与动态字符
38 0
|
SQL Java 数据库连接
“MyBatis进阶:分页与特殊字符处理“
“MyBatis进阶:分页与特殊字符处理“
69 0