mybatis数据库报错,不能单独把id拿出来,需要把他放进一个实体类中

时间:2022-04-29 09:58:36

nested exception is org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'id' in 'class java.lang.String'

错误异常:nested exception is org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'id' in 'class java.lang.String'

映射器类(Mapper interface)

public interface NarCodeService {
    
    public NarCode getNarCode(String id);

}

Xml映射文件配置(部分)

mybatis数据库报错,不能单独把id拿出来,需要把他放进一个实体类中
<select id="getNarCode" parameterType="java.lang.String"
         resultType="narCode">
         select
         <include refid="Base_Column_List"></include>
         from nar_code
         <where>
             <if test="id != null">
                 id=#{id,jdbcType=VARCHAR}
             </if>
         </where>
 </select>
mybatis数据库报错,不能单独把id拿出来,需要把他放进一个实体类中

这是Mybatis Xml映射文件配置,当我执行这个映射select语句时报错:nested exception is org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'id' in 'class java.lang.String'

 解决办法有两种:

1.去掉sql语句的if标签限制

<if test="id != null">  id=#{id,jdbcType=VARCHAR} </if> 改为: id=#{id,jdbcType=VARCHAR} 原因:我自己猜测加上if标签时,id属性没有包含在数据类型为String id对象中。 如果去掉if标签时直接使用这个数据类型为String id对象 2.将parameterType="java.lang.String"参数改为传一个自定义实体对象或者HashMap来封装这个id参数 原因:可以在自定义实体对象或者HashMap中找到这个id属性