我调试了下代码,参数都是没错的,语句中的问号也是没错的,后来百度了下,原来?问不能用引号''包着,否则会当成正式参数传入sql语句中,不会当成占位符。
于是我把引号去掉,改成:and title like %?%,传入参数'java'又报错了,hibernate把?解析成参数时语句变成and title like %'java'%,
错误如下:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '%'java'% order by create_time desc' at line 1
通过上面就知道了hibernate解析参数后会自动加上''引号,要想实现模糊查询时,可以通过提前拼接好百分号%,语句改成如下:
select * from article where 1=1 and title like ? order by create_time desc
问号里的参数我们传入'%java%' 就可以了。
相关阅读 >>
parameter index out of range (1 > number of parameters, which is 0
更多相关阅读请进入《hibernate》频道 >>

深入理解Java虚拟机 JVM高级特性与实践 周志明 第3版
这是一部从工作原理和工程实践两个维度深入剖析JVM的著作,是计算机领域公认的经典。