昨天码代码,掉到坑里,耽误了几个小时才从坑里爬出来-_-|||
1.单个的字符要写到双引号,单引号单个字符当作char类型处理 2.如果是数值类型的String会自动转为int 进行比较 ,
原写法 "null != df_kh_id and df_kh_id != '0'" 传入的值为 0(String),
改为'null != df_kh_id and df_kh_id != 0'
或者改为'null != df_kh_id and df_kh_id != "0"'
.xml文件的部分代码
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
df_kh_id == '0'处出错,导致不执行if判断中的sql,运行程序不报错,没有任何提示。去掉df_kh_id == '0' and 则可执行。对此我百思不得其解,
因为自己有写过如下代码,是没错的。
- 1
- 2
- 3
苦苦纠结了几个小时,最后是我的同事JW大神帮我解决的,膜拜大神o(≧v≦)o~~好棒
把<if test="df_kh_id
== '0' and df_kh_id!= null ">
改为<if test='df_kh_id == "0" and df_kh_id!= null '>
或改为<if test="df_kh_id == '0'.toString() and df_kh_id!= null ">
即可。
原因是:mybatis是用OGNL表达式来解析的,在OGNL的表达式中,’1’会被解析成字符,java是强类型的,char 和 一个string 会导致不等,所以if标签中的sql不会被解析。
总结下使用方法:1.单个的字符要写到双引号里面或者使用.toString()才行!
2 如果传入的String类型可转为int,也可以直接和int做比较!