发生这个的原因就是对于的属性字段没有书写正确,导致报错。
这类型的报错类似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中传递的是否相同。如果不同,就会出现一些莫名的问题。
学无止境