MyBatis分页与特殊字符处理

一、分页

1.1 分页插件PageHelper

PageHelper 是 Mybatis 的一个插件。官网

PageHelper插件的优点:

  1. 简单易用:PageHelper插件提供了简单的配置和使用方式,只需在项目中引入相关依赖,并在查询方法中添加分页参数即可实现分页查询,无需编写繁琐的分页逻辑。
  2. 高效性能:PageHelper插件采用了优化的分页算法,能够快速准确地定位到指定页的数据,提高了查询效率。它通过拦截MyBatis的查询语句,在执行前自动添加分页的SQL语句,避免了全表扫描和大量数据的加载,从而提升了查询性能。
  3. 功能丰富:PageHelper插件提供了丰富的分页功能,包括排序、筛选、统计等功能,可以满足不同场景下的分页需求。它支持物理分页和逻辑分页两种方式,可以根据实际需求选择最适合的方式。
  4. 可扩展性强:PageHelper插件支持自定义拦截器和插件,可以根据项目需求进行扩展和定制,实现更加灵活的分页功能。它还支持多种数据库,如MySQL、Oracle、PostgreSQL等,具有较好的兼容性。

1.2 使用

1.2.1 导入pom依赖

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

1.2.2 Mybatis.cfg.xml配置拦截器

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

1.2.3. 配置 Mapper.xml

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

1.2.4 测试


package com.xqx.test;
import com.github.pagehelper.PageHelper;
import com.xqx.biz.BookBiz;
import com.xqx.biz.impl.BookBizImpl;
import com.xqx.mapper.BookMapper;
import com.xqx.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;
 

public class Test {
    private BookBiz bookBiz;
    private SqlSession sqlSession;
 
    @Before
    public void before() {
        System.out.println("执行测试方法之前会执行的初始化代码块方法");
        //获取一个数据库会话对象,并将其赋值给sqlSession变量
        this.sqlSession = SessionUtil.openSession();
        //实例化业务逻辑层
        BookBizImpl book = new BookBizImpl();
        BookMapper mapper = this.sqlSession.getMapper(BookMapper.class);
        book.setBookMapper(mapper);
        this.bookBiz = book;
    }
 
    @After
    public void after() {
        System.out.println("执行测试方法之后的后执行的方法");
        //提交事务
        this.sqlSession.commit();
    }
 
 
    @Test
    public void test(){
        Map map = new HashMap();
        map.put("bname","圣墟");
        PageHelper.startPage(2, 20);
        bookBiz.listPager(map).forEach(System.out::println);
    }
}

在这里插入图片描述

二、特殊字符处理

在 Mybatis 中,特殊字符是指在 SQL 语句中使用的具有特殊含义的字符。如经常使用到 大于(>,>=)、小于(<,<=)、不等于(<> ,!=)符号。

2.1 使用CDATA区段

CDATA区段是XML中的一个元素,它包含了不会被解析器解析的文本。一个CDATA区段中的标签不会被视为标记,同时实体也不会被展开。我们在需要有特殊字符的地方加上<![CDATA[ "含带特殊字符"]]>即可。
BookMapper.xml

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

2.2 使用实体引用

在XML中,一些字符具有特殊的意义,比如<、>和&等符号。如果我们需要在文本中使用这些符号,就要将它们转义为对应的实体引用。

<select id="test" resultType="com.xqx.model.Book" parameterType="java.util.Map">
    select * from t_mvc_book where bname like concat(concat('%',#{bname}),'%')  and  price &lt; #{max}
  </select>
  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值