如何在ibatis框架下使用正则表达式

raohenglena 2015-07-29 01:47:19
查了很多资料,没找到多少资料,也没理出什么头绪,求各位大牛出手相助。
需求是:需要将数据库中某一字段(字符串型)与一入参字符串进行模糊匹配,只要任意一字符相同,就匹配成功。
如: “1,2,3,4” 与 “1_3_4"就是可以匹配成功。

在mysql中, 用 select * from Resume_TBL where majorlabels regexp '["1_2"]'; 可以查询出结果。
但在ibatis中这样配置
<isNotNull prepend="AND" property="majorLabels">
<![CDATA[
majorlabels regexp '[#majorLabels#]'
]]>
</isNotNull>
总会报错
--- Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column '1_2' in 'where clause'

at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:233)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72)
at org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:203)
at org.springframework.orm.ibatis.SqlMapClientTemplate.queryForObject(SqlMapClientTemplate.java:268)
at com.xhxkj.xsh.dao.impl.ResumeDaoImpl.getRowCount(ResumeDaoImpl.java:78)
at com.xhxkj.xsh.service.impl.ResumeServiceImpl.getRowCount(ResumeServiceImpl.java:52)
at com.xhxkj.xsh.web.WebServerInterfaceImpl.getResumeList(WebServerInterfaceImpl.java:750)
... 30 more
...全文
182 点赞 收藏 4
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
raohenglena 2015-07-31
感谢各位大牛的帮助,问题已经解决了 用这种格式majorlabels regexp '['#majorLabels#,就能正确的查询出来,传参两边的方括号都要用单引号括起来。 也算是借鉴了2楼大哥的思路,所以分就给这位大哥了。 最后还是感谢各位的帮助,谢谢!
回复
scmod 2015-07-29
majorLabels是string类型不?好像string的话他会变成带单引号的 可以把majorLabels的值改成\"majorLabels\"然后用$不用#来引用 或者拼接"||$majorLabels$||"这样 我没试过...瞎猜的.... 不知道是不是单引号双引号问题
回复
小的传说 2015-07-29
<isNotNull prepend="AND" property="majorLabels"> <![CDATA[ majorlabels regexp '[‘||#majorLabels#||’]' ]]> </isNotNull> 用连接符连接试试,没用过mysql,oracle是可以用的 majorlabels regexp '[‘||#majorLabels#||’]'
回复
迷林 2015-07-29
未知列'1_2'在'where子句“上 还有你这种配置我没看过 还有待考察,待我下去看看了在上来答复你吧
回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2015-07-29 01:47
社区公告
暂无公告