mybatis映射文件使用oracle函数问题

_昨天使用mybatis,xml里面模糊查询使用了concat连接两个%,查询报错!
后来在java代码传值的时候,先拼接%查询出来了,今天使用between和to_date,查询两段时间之间的数据又报错!
不知道怎么解决了,望大牛解惑一下。
sql语句都没问题在PLSQL跑过。sql如下:
SELECT COUNT(*) FROM 表名 WHERE FZM LIKE #{参数} AND (ZWSJ BETWEEN TO_DATE( #{参数} ,'yyyy-mm-dd hh24:mi') AND TO_DATE( #{参数},:00','yyyy-mm-dd hh24:mi'));
_**

4个回答

查看控制台日志看下执行该sql语句传递进去的参数是什么

qq_38494537
chenjiexixi 回复丵鹰: 我把like去掉,直接写入死的参数,还是报缺失关键字
大约 2 年之前 回复
strutce
丵鹰 回复chenjiexixi: 有可能是你拼接的%把整个sql语句给破坏了,造成缺失关键字,因为从你sql语句是完整,出现缺失只有可能是sql语句被破坏了
大约 2 年之前 回复
qq_38494537
chenjiexixi 回复丵鹰: 不是like的问题了,是后面的问题,我传入参数之前已经拼接了前后%
大约 2 年之前 回复
strutce
丵鹰 回复chenjiexixi: 外面就不用拼接 %
大约 2 年之前 回复
strutce
丵鹰 回复chenjiexixi: like 那一块改成这样试下,LIKE '%'||#{参数}||'%' 如果还不行就需要把xml代码截图出来看下
大约 2 年之前 回复
qq_38494537
chenjiexixi 是?代替的。我没配置,默认好像是正确不打印,错误打印出来的,我把参数改成死的数字和字符,还是报错
大约 2 年之前 回复

**### SQL: SELECT COUNT(*) FROM TD_HYZQJ WHERE FZM LIKE ? AND (ZWSJ BETWEEN TO_DATE('2016-12-20 18:00','yyyy-mm-dd hh24:mi') ADN TO_DATE('2016-12-21 18:00','yyyy-mm-dd hh24:mi'))

Cause: java.sql.SQLSyntaxErrorException: ORA-00905: 缺失关键字

; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: ORA-00905: 缺失关键字
] with root cause
java.sql.SQLSyntaxErrorException: ORA-00905: 缺失关键字**

这是报错信息,不管是参数写死还是传入,都是包一样的错

图片说明
这是参数写死了的

qq_38494537
chenjiexixi 回复丵鹰: 是这里,我直接写FZM=‘车站名’ AND......
大约 2 年之前 回复
strutce
丵鹰 我指定是 FZM LIKE #{cz} 这里的问题,如果你把这个条件去了 if中的and也要去掉
大约 2 年之前 回复

你没有传入参数啊,娃子 。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!