Mybatis模糊查询无法确定参数$1的数据类型: ERROR: could not determine data type of parameter $1

Mybatis模糊查询无法确定参数$1的数据类型: 报错ERROR: could not determine data type of parameter $1

修改前:

SELECT count(0) FROM "bank_21" WHERE my_name LIKE CONCAT('%', ?, '%')
 

修改后:


SELECT count(0) FROM "bank_21" WHERE my_name like '%${myName}%'
 

补充:对于mysql 的 like 而言,一般都要用 like concat() 组合,可以防止sql注入。

但是使用pgsql时添加了参数stringtype=unspecified,就会报无法确定参数类型的错。

出现的问题:'%${xx}%'的写法无法防止sql注入,不是最佳解决办法

最佳解决办法: my_name like  '%'||#{myName}||'%'

使用TEXT强制转换数据类型为字符串

 my_name like  concat('%',#{myName}::text,'%')

 

 

参考:

https://blog.csdn.net/NMZLduiduidui/article/details/111522289

https://blog.csdn.net/weixin_55469859/article/details/118737540

https://blog.csdn.net/zhenwei1994/article/details/81876278

posted on 2022-06-21 15:02  腾逸  阅读(1867)  评论(0编辑  收藏  举报