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>标签同时使用的问题及解决方法,希望对大家有所帮助