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

Mybatis传单个参数和标签同时使用的问题及解决方法

程序员文章站 2023-12-19 10:00:04
// mapper.java emerevent selectbyalarmid(integer alarmid); // mapper.xml
// mapper.java
emerevent selectbyalarmid(integer alarmid);
// mapper.xml
<select id="selectbyalarmid" resultmap="baseresultmap" parametertype="java.lang.integer">
  select
    <include refid="base_column_list" />
  from event
  <where>
    <if test="alarmid != null">
      and alarm_id = #{alarmid,jdbctype=integer}
    </if>
  </where>
</select>

由于只传了一个参数:alarmid,配置文件中对应的sql里使用if标签,然后报错:

nested exception is org.apache.ibatis.reflection.reflectionexception: there is no getter for property named 'alarmid' in 'class java.lang.integer'

解决办法:

1.将mapper配置文件中的sql语句中的if判断去掉

<select id="selectbyalarmid" resultmap="baseresultmap" parametertype="java.lang.integer">
   select
    <include refid="base_column_list" />
   from event
    where alarm_id = #{alarmid,jdbctype=integer}
</select>

2.如果想要使用if标签,则将参数alarmid封装到对象或map中即可

总结

以上所述是小编给大家介绍的mybatis传单个参数和<if>标签同时使用的问题及解决方法,希望对大家有所帮助

上一篇:

下一篇: