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

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.xdnf.cn/news/8130.html

相关文章:

  • (37)服务器增加ipv6配置方法
  • MySQL 查询用户权限的方法
  • redis-7.4.2 通过 systemd管理,rpmbuild spec文件参考
  • C++ JSON解析技术详解
  • QGIS DB Manager 导入 Shp 到 PostGIS 空间数据库
  • Mysql 刷题Day09
  • 常用快捷键大全
  • 在Pycharm中如何安装Flask
  • C++ 02.好用的命令行解析库cmdline和CLI11
  • 【Java高阶面经:数据库篇】19、分库分表查询困境:无分库分表键时的高效应对
  • 【RAG】ragflow源码亮点:文档embedding向量化加权融合
  • 【未来展望】云、AI与元宇宙的融合架构
  • dlib库的人脸检测案例实现
  • js中encodeURIComponent函数使用场景
  • MLpack 开源库介绍与使用指南
  • 操作系统学习笔记第1章 操作系统概述(灰灰题库
  • 数据库表索引维护策略
  • 大模型数据标注:驱动人工智能进化的基石
  • 前端学习笔记element-Plus
  • P22:LSTM-火灾温度预测
  • Tomcat优化
  • 《大数据之路:阿里巴巴大数据实践》笔记
  • 让电脑不再卡,从清理系统做起
  • DRIVEVLM: 大视觉语言模型和自动驾驶的融合
  • Ubuntu下误删除分区的补救
  • XMOS推出支持AES67标准的以太网音频解决方案——使高兼容性和低延迟专业音频传输及播放成为可能
  • 机器人坐标系标定
  • App开发中为什么import android.app.Activity;
  • VisionPro_连接相机
  • 戴尔电脑怎么开启vt_戴尔电脑新旧bios开启vt虚拟化图文教程