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

MyBatis-Plus的自带分页方法生成的SQL失败:The error occurred while setting parameters

1、error描述

数据库是postgres,Java使用mybatis-plus的分页功能,生成的分页SQL不能正常运行。

"msg": "nested exception is org.apache.ibatis.exceptions.PersistenceException: Error querying database.  
Cause: com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Error: Method queryTotal execution error of sql : SELECT COUNT(1) FROM mfile file WHERE (1 = 1) AND file.file_name LIKE CONCAT('%', ?, '%') The error may exist in URL [jar:file:/**/mapper/**Mapper.xml]The error may involve defaultParameterMap<br/>The error occurred while setting parameters<br/>Cause: com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: 
Error: Method queryTotal execution error of sql : SELECT COUNT(1) FROM mfile file WHERE (1 = 1) AND file.file_name LIKE CONCAT('%', ?, '%') <br/>

2、Java代码

     public IPage<MFileVO> queryByPage(MFileVO mFile) throws SQLException, ClassNotFoundException {IPage<MFileVO> mFileEntityIPage = baseMapper.queryByPage(mFile.mkPage(), mFile);...}

3、mapper的SQL

 select file.*,version.version_number as versionNumberfrom file fileleft join file_version version on version.id=file.version_idwhere (1=1)<if test="entity.dataGuid != null and entity.dataGuid != ''">AND file.data_parent_ids like CONCAT('%', #{entity.dataGuid}::VARCHAR, '%')</if><if test="entity.fileName != null and entity.fileName != ''">AND file.file_name like CONCAT('%', #{entity.fileName}, '%')</if>

4、原因

  1. CONCAT 在 PostgreSQL 中的行为
    PostgreSQL 不支持 CONCAT() 函数,应使用 || 进行字符串拼接。
    示例错误写法:
  LIKE CONCAT('%', #{entity.fileName}, '%')

正确写法(推荐):

  LIKE '%' || #{entity.fileName} || '%'

5、测试

修改前,MayBatis-Plus自动生成的分页count语句能在Navicat和pgadmin4中正常执行,运行代码时报错

SELECTCOUNT(1) 
FROMmfile file 
WHERE(1 = 1) AND file.file_name LIKE CONCAT('%', 'test', '%');

修改后运行代码也不报错了,自动生成的分页count语句如下

SELECTCOUNT(1) 
FROMmfile file 
WHERE(1 = 1) AND file.file_name LIKE '%' || 'test' || '%' 

我记得项目初始时并没有这种错误,能正常运行,可能是某些组件升级过,导致接口报错了。

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

相关文章:

  • Redis 的速度为什么这么快
  • HarmonyOS实战:自定义时间选择器
  • Flannel后端为UDP模式下,分析数据包的发送方式——tun设备(三)
  • 6:OpenCV—图像滤波
  • pytorch语法学习
  • 5:OpenCV—图像亮度、对比度变换
  • Oracle 的V$ACTIVE_SESSION_HISTORY 视图
  • redis数据持久化和配置-13(配置 AOF:Appendfsync 策略)
  • 【Python 算法零基础 4.排序 ② 冒泡排序】
  • Python:操作Excel设置行高和列宽
  • docker-volume-backup 备份 ragflow volumes
  • Axure设计数字乡村可视化大屏:从布局到交互的实战经验分享
  • 算法第26天 | 贪心算法、455.分发饼干、376. 摆动序列、 53. 最大子序和
  • PDF处理控件Aspose.PDF教程:以编程方式将 PDF 导出为 JPG
  • Vue3+ElementPlus 开箱即用后台管理系统,支持白天黑夜主题切换,通用管理组件,
  • AI大模型应用之评测篇
  • 力扣小题, 力扣113.路径总和II力扣.111二叉树的最小深度 力扣.221最大正方形力扣5.最长回文子串更加优秀的算法:中心扩展算法
  • el-form elform 对齐方式调整
  • JESD204 ip核使用与例程分析(二)
  • Linux shell 正则表达式高效使用
  • 50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | Blurry Loading (毛玻璃加载)
  • C#中的ThreadStart委托
  • GPU加速Kubernetes集群助力音视频转码与AI工作负载扩展
  • LeetCode[222]完全二叉树的节点个数
  • DPDK 技术详解:榨干网络性能的“瑞士军刀”
  • anaconda的c++环境与ros2需要的系统变量c++环境冲突
  • Docker 疑难杂症解决指南大纲
  • 深入解析Spring Boot与Kafka集成:构建高效消息驱动微服务
  • Python 实现web请求与响应
  • 演示:【WPF-WinCC3D】 3D工业组态监控平台源代码