欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

mybatis xml文件中传入参数和if结合使用时要注意的地方

程序员文章站 2022-07-13 16:10:40
...

 

mybatis中如果用了if那么传进来的参数不能直接单独传入,要封装到map或bo中传入,要么去了if

 (if test表达式是从实体的get方法获取的,单传的参数没有实体就没有get方法

 

mybatis xml文件中传入参数和if结合使用时要注意的地方:

 

 

这里直接传入int但是又用了if所以出错

Caused by: org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'customerKey' in 'class java.lang.Integer'

<select id="getYJSL" parameterType="Integer" resultType="int">

   SELECT count(*) yjsl    

   FROM tb_con_obj A, TB_CON_ORD B 

   WHERE A.CONOBJ_KEY = B.CONOBJ_KEY  

   AND A.IS_CONFERPRICE = 'Y'

   AND B.ORDER_STATUS = 'A' 

   AND A.CONOBJ_STATUS <![CDATA[<>]]> 'E'

   <if test="customerKey !=null and customerKey!='' ">

   AND (B.CUSTOMER_KEY = #{customerKey} or a.customer_key = #{customerKey})

   </if>

  </select>

 

====

 

  使用SpringMVC+Mybatis框架写项目的时候,在mapper里面的sql语句处出现了这个错误

<if test="agoTime != null">

and updateTime &gt; #{agoTime}

</if>

原因是:

如果将and语句中的#{属性}写在if语句中,mybatis会去对象中从它的get方法中取值,而我之前是直接传递的值,并没有封装对象。

 

解决办法:

将属性封装到一个对象中,设置其get方法即可

 

相关标签: mybatis