mybatis中的一些坑

1.#{}取值相当于在内容前后加上'',但不全是,比如把内容为'1','2'的string值去掉前后的"'"成为1','2,然后xml中#{}取出放在sql的in语句(#{})中,结果还是和in('1','2')有区别。
2.${}取值是内容原样拼接到sql中,但是里面的参数不能是直接的简单参数,而应该是复杂参数的属性,否则报这个属性没有getter方法,如 dao或者mapper中query(String a),
xml中如果${a}获取值则会报前面说的错误,要把a封装到map中,或者自定义类型的对象中,属性为a,则${a}才不会报错
3.当xml中方法传入的是简单参数,如query(String a),如果与<if test>使用,则要么在对应的dao方法参数a之前加上@Param注解(如query(@Param("a") String a)),要么就在<if test>用_parameter代替a(如<if test="_parameter">,而不能写成<if test="a !=   null">)。否则也会报找不到属性的getter方法错误。
4.<if test>字符串比较时注意单引号和双引号的区别,如果a为空字符串,那么<if test='a == ""'>正确,但是<if test="a == ''">就是错误的,因为后者的意思是把一个字符串a和一个空字符(单引号被识别为字符)比较,在java中当然不相等。
可以写成<if test="a == ''.toString()">或者<if test="a == \"\"">

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值