JFinal的Db查询带中括号的参数时查不到数据

--------------------------

数据库:PostgreSQL 13
JFinal 4.7

--------------------------

String zt="信息(在线)";

List<Record> records = Db.find("select * from tb_info where zt=?", zt);


records得到的是空的

--------------------------

通过数据库管理软件,使用sql语句

select * from tb_info where zt='信息(在线)'

查询得到一条数据


评论区

杜福忠

2021-05-20 11:10

不熟悉PostgreSQL,按说JDBC不会干这事。
看看是否使用了DruidPlugin的addFilter,追一追代码找找是被谁处理了。
还有一种情况就是 数据库的连接地址连错库了,java和管理工具两个连的不是同一个库,开发开发着晕了也可能。。。

孤竹行

2021-05-20 16:02

@杜福忠 是用了DruidPlugin的addFilter,这个要怎么单独把某个过滤去掉呢?

杜福忠

2021-05-20 16:18

@孤竹行 没细研究Druid的addFilter 都有哪些配置(按说应该有拦截等级之类的配置),如果Druid官网没找到,可以继承那个Filter后,覆写,干点java能干的事情

糊搞

2021-05-20 16:19

@杜福忠 应该不是Filter的锅,因为括号是双字节的,而且使用了占位符

杜福忠

2021-05-20 16:31

@糊搞 我也不确定,只是推理一下。 @孤竹行 楼主可以把addFilter注释掉,然后再看是否正常,排除法