mybatis if 标签的一般用法:

方法一:

and column_a like concat('%',#{keyword},'%')

或者这样,方法二:

and column_a like concat('%',#{keyword},'%')

也就是说,test条件可以用双引号括起来,里面的字符串用单引号,也可以test条件用单引号括起来,里面的字符串用双引号.两种写法都可以.

但是当我要比较keyword是否等于"a"时,用方法一是写成如下:

and column_a = 'a'

这时如果keyword的值是"a",运行的时候会报这样的异常:java.lang.NumberFormatException: For input string: "a".

解决方法如下:

用方法二的方式:

and column_a = 'a'

或者还是用方法一,但是'a'改成'a'.toString()

and column_a = 'a'

原因是ognl语法问题, test条件内的长度为1的字符串'a'会被当成char类型,所以传入的keyword值会转成数字与其比较,如果keyword的值是"a",就会报错,但如果是如这样的写法就不会有这种问题,因为只有单个字符才会被当成char类型,'ab'和''还是当成字符串做比较的.

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐