微前端架构如何改变企业的开发模式与效率提升
1172
2022-10-22
mybatis对传入基本类型参数的判断方式
目录对传入基本类型参数的判断解决办法传入基本类型参数时test判断报错分析解决办法小结一下
对传入基本类型参数的判断
mybatis的xml文件的sql语句中parameterType为基本类型,如:
select * from customer
where
会报错:There is no getter for property named 'id' in 'class java.lang.Integer'
这是因为Integer对象中没有id属性
解决办法
select * from Customer
where
即将接收参数的参数名改为_parameter,注意改成其他参数名没用。
传入基本类型参数时test判断报错
在使用mybatis的时候出现了这样的问题:
//Dao层的接口中的代码
List
//对应的mapper中的代码
select name,client_id
from table1
and username= #{id}
//报的错误org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'username' in 'class java.lang.String'
分析
There is no getter for property named ‘username’ in ‘class java.lang.String’,这句话打大概意思是:在“class java.lang.String”中没有名为“username”的属性的getter方法。因为mybatis默认采用ONGL解析参数,所以会自动采用对象树的形式取string.num值,引起错误。
解决办法
if test中的id用_parameter替换,而实际的语句不需要修改and a.id =#{id},因为Mybatis当只传入一个参数时#{ } 中的内容没有要求。
在Mapper中给出入参设置名称yziqbnl,例:public … getName(@Param(“username”) String username);这样修改后我们前面的写法就不会报错了。
小结一下
在传入基本类型的数据时,if标签中test判断的书写hi根据ognl表达式来取值的,所以不能直接写参数的名称,要利用_parameter来替代,或者利用注解@Pram("")来给参数起别名。
补充一点点:标签when中的test属性也有同样的问题!!!
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~