解决mybatis报错 There is no getter for property named ... in 'class java.lang.String'

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wobuaizhi/article/details/83512334

发生这个的原因就是对于的属性字段没有书写正确,导致报错。

这类型的报错类似There is no getter for property named ... in 'classXXX。一个主要原因是在xml中进行参数配置的时候,参数名称书写错误。这个也是我遇到的问题。

为了避免这类问题,就要了解mybatis配置文件中parameterType这个属性。

这个属性的值可以为:

1,简单类型,int,Integer,String等

2,对象类型,User类

3,集合类型,Map,List等

针对上面的列子给出几个简单的demo。

a,简单类型,

<select id="selectUsers" resultType="User" parameterType="int">
  select id, username, password
  from users
  where id = #{id}
</select>
这类简单的数据类型可以不写,类似下面这样。
<select id="selectUsers" resultType="User">
  select id, username, password
  from users
  where id = #{id}
</select>

b,对象类型,User是自己的一个实体类,包含id,username,password。

<insert id="insertUser" parameterType="User">
  insert into users (id, username, password)
  values (#{id}, #{username}, #{password})
</insert>

c,这个比较复杂,分为两种情况,一种是List集合类型,一种是Map类型。

如果是List,那么直接使用foreach循环就可以了。

map的话,在传递参数的时候要注意,参数名称和key值一定要对应。这一点我再之前的博客里说过,这里不再赘述,有兴趣的话可以看看,文章

到这里,对这种主要参数传递应该有了解了,为了避免出错,在写代码的时候要特别注意,参数和parameterType中传递的是否相同。如果不同,就会出现一些莫名的问题。

学无止境

猜你喜欢

转载自blog.csdn.net/wobuaizhi/article/details/83512334
今日推荐