关于mybatis中基本类型条件判断问题
2013-10-18 16:26
561 查看
一:发现问题
sql动态语句中如果 parameterType="int"
是正确的,但是如果加上if test
则报错:
出错原因:Mybatis默认采用ONGL解析参数,所以会自动采用对象树的形式取Integer.cmpid。Integer对象没有cmpid属性。如果不解析参数,mybatis自动识别传入的参数,不会报错。
二:解决办法
1.修改select语句
参数名全部改为_parameter。
2.不修改sql,只修改接口
接口类:
改为:
3.可以将参数包装在hashmap或者对象中作为参数
sql动态语句中如果 parameterType="int"
<select id="sel_campusinfo" parameterType="int" resultType="Campusinfo"> select cmpid,cmpname from campusinfo where state!='d' and cmpid=#{cmpid} </select>
是正确的,但是如果加上if test
<select id="sel_campusinfo" parameterType="int" resultType="Campusinfo"> select cmpid,cmpname from campusinfo where state!='d' and cmpid!=0 <if test="cmpid!=0">and cmpid=#{cmpid}</if> </select>
则报错:
There is no getter for property named 'cmpid' in 'class java.lang.Integer'
出错原因:Mybatis默认采用ONGL解析参数,所以会自动采用对象树的形式取Integer.cmpid。Integer对象没有cmpid属性。如果不解析参数,mybatis自动识别传入的参数,不会报错。
二:解决办法
1.修改select语句
<select id="sel_campusinfo" parameterType="int" resultType="Campusinfo"> select cmpid,cmpname from campusinfo where state!='d' and cmpid!=0 <if test="_parameter!=0">and cmpid=#{_parameter}</if> </select>
参数名全部改为_parameter。
2.不修改sql,只修改接口
接口类:
Campusinfo sel_campusinfo( int cmpid);
改为:
Campusinfo sel_campusinfo(@Param(value="cmpid") int cmpid);
3.可以将参数包装在hashmap或者对象中作为参数
相关文章推荐
- 关于mybatis中基本类型条件判断问题
- 关于mybatis中基本类型条件判断问题
- 关于mybatis中基本类型条件判断问题
- 关于mybatis中基本类型条件判断问题
- mybatis 基本类型的if条件判断问题 There is no getter for property named 'xxx' in 'class Java.lang.Integer'
- 关于mybatis 传入基本参数类型使用if test 判断出错的问题
- 当mapper中的parametType为基本类型(如int,string等)时,报错的问题(mybatis使用了<if>判断)
- mybatis的if标签对于单个基本数据类型的参数的判断问题
- mybatis 拼接语句时,Boolean 类型判断为false的时候不生效问题
- Java中关于赋值语句作为if条件判断的问题
- MyBatis if判断条件为等于的问题
- 关于mybatis的if判断里传入0时的问题
- 关于char(n)类型引起的字符串判断问题
- 两个有趣的关于java里基本类型转换的问题
- 关于Integer对象比较,和int基本类型比较的一些问题
- MyBatis 传入单个基本类型参数所需要注意的问题
- 关于myBatis与SQLserver 配合使用,查询类型为Date的数据时,日期会减少两天的问题
- Java中关于基本类型与对象包装器==的问题
- 使用mybatis遇到的关于条件查询">"以及if test传参的使用问题
- MyBatis 判断条件为等于的问题