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

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' || '%' 

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

相关文章:

  • 522UART是什么
  • 【项目】抽奖系统bug历程(持续更新)
  • Git分支的强制回滚
  • Python Click库:轻松构建优雅的命令行工具
  • 技术篇-2.1.C\C++应用场景及开发工具安装
  • Java使用Collections集合工具类
  • 力扣238.除自身以外数组的乘积
  • 【TI MSP430与SD NAND:心电监测的长续航解决方案】
  • Oracle 中 SHRINK 与 MOVE 操作的比较
  • 第二十九天打卡
  • 分布式锁(详解)
  • ISO 26262-5 生产维护和报废
  • MQTT控制报文
  • 初学c语言18(自定义类型:结构体)
  • 硬件开发复盘实战指南
  • DiagramJS设计原理解读(二)
  • MVC和MVVM架构的区别
  • PyInstaller 如何在mac电脑上生成在window上可执行的exe文件
  • 项目开发中如何Git如何保持官方补丁更新
  • python与mysql怎么完成大量的数据交互?
  • 做建材加盟什么网站好/seo实战技巧100例
  • 怎样经营好一个网站/石家庄seo公司
  • 网站制作哪家公司好/百度竞价排名模式
  • 个人做网站 优帮云/优化百度seo技术搜索引擎
  • wordpress点击量最多的文章/seo的培训班
  • 网站设计分析/今日热点事件