当前位置: 首页 > news >正文

【日常记录-Mybatis】PageHelper导致语句截断

1. 简介

        PageHelper是Mybatis-Plus中的一个插件,主要用于实现数据库的分页查询功能。其核心原理是将传入的页码和条数赋值给一个Page对象,并保存到本地线程ThreadLocal中,接下来,PageHelper会进入Mybatis的拦截器环节,在拦截器中获取并处理刚才保存在ThreadLocal中的分页参数。这些分页参数会与原本的SQL语句和内部已经定义好的SQL进行拼接,从而完成带有分页处理的SQL语句的构建。

2. 现象描述

 2.1 代码

// 调用位置
PageHelper.startPage(pageNum,pageSize);
List<MyObject> result = customMapper.getList(taskId,name);// Mapper中方法的定义
List<MyObject> getList(@Param("taskId")String taskId,@Param("name")String name);// xml定义SQL语句
<select id="getList" resultType="MyObject">select * from myTable where task_id = #{taskId}<if test="name != null">and name= #{name}</if>order by id desc
</select>

2.2 异常信息

3. 原因

        PageHelper在进行SQL语句解析时,若在where子句中遇到连续多于两个的\n,则直接截断返回,导致语句出错。2.1代码中的where子句在task_id=?\n之后,出现连续4个\n导致语句被截断。

4. 解决方案

   方案1:where子句中不要出现空行即可;

  方案2: 在每个空行中输入空格,避免多个连续\n出现;

http://www.lryc.cn/news/498008.html

相关文章:

  • 随时随地掌控数据:如何使用手机APP远程访问飞牛云NAS
  • JVM 类加载器有哪些?双亲委派机制的作用是什么?如何自定义类加载器?
  • 从基态到激发态再到里德伯态的双光子激发过程
  • Clickhouse 外部存储引擎
  • eclipse怎么配置jdk路径?
  • 【前端】JavaScript 中的创建对象模式要点
  • GWAS分析先做后学
  • 【系统设计】高可用之缓存基础
  • 《Java核心技术I》volatile字段
  • 2024运维故障记 | 12/2 网易云音乐崩了
  • 架构设计读后——微服务
  • 软考高级架构-9.4.4-双机热备技术 与 服务器集群技术
  • 聊聊前端工程化
  • “放弃Redis Desktop Manager使用Redis Insight”:日常使用教程(Redis可视化工具)
  • mmdection配置-yolo转coco
  • 聚合支付系统/官方个人免签系统/三方支付系统稳定安全高并发 附教程
  • 力扣67. 二进制求和
  • 网络安全中的 SOC 是什么?
  • 16、鸿蒙学习——Visibility与(if...else)该如何选择
  • PH热榜 | 2024-12-05
  • Qt Chart 模块化封装曲线图
  • 【AI系统】MobileFormer
  • python数据分析之爬虫基础:解析
  • uniapp中导入uview或者uview plus
  • 【LeetCode】122.买卖股票的最佳时机II
  • openGauss开源数据库实战十九
  • 恶补英语初级第18天,《询问他人的喜好(上)》
  • centos 报 ping: www.baidu.com: Name or service not known
  • Python:使用随机森林分类器进行模型评估:ROC 曲线与 AUC 指标计算
  • 数据库表约束完全指南:提升数据完整性和准确性