关于动态SQL里的条件查询(if test):

1.lombok插件和mybatis插件在有些变量名下会冲突,比如一个变量为rType的字段,lombok插件认为应该是getRType,但是mybatis和idea则会认为是getrType。不同的命名规范导致互相解析的时候就会找不到对应的get方法。所以在使用变量时尽量避免使用rTyp这种小写字母+大写字母的命名方法。

2.SQL里的用条件查询的时候,判断规则比较麻烦,如果是比较字符串的话,建议都用双引号而不是单引号把判断条件括起来(外面用单引号)。因为如果字符串里是数字或是单个字母的话,使用单引号都会失效。数字的话,必须把单引号去掉,字符的话要加toString()方法(如'y'.toString())。

3.空字符和0的坑:mybatis里面Integer类型如果为0,在XML里面会被等同于""(空字符串);而如果传的是字符串的0,也会等同于"";所以在mybatis的XML里的test判断,注意慎用空字符串""的判断,他会等同于数值0。从而被test语句给过滤掉,一般加上!=null的判断就好。PS.mybatis本身并不是用来做参数校验的,加上它自己的test判断逻辑和java的并不一致(很奇怪),已经踩过几次坑了。因此以后参数校验部分最好放在java端做,mybatis只用来做一些简单的非null判断.

相关文章:

  • 2021-11-04
  • 2022-01-15
  • 2021-06-18
  • 2022-02-15
猜你喜欢
  • 2022-02-20
  • 2022-01-01
  • 2021-05-16
  • 2022-12-23
  • 2021-09-16
  • 2021-08-14
相关资源
相似解决方案