最新消息:关注【太平洋学习网】微信公众号,可以获取全套资料,【全套Java基础27天】【JavaEE就业视频4个月】【Android就业视频4个月】

There is no getter for property named 'parentMenuid' in 'class java.lang.Integer'解决

Javaweb 太平洋学习网 浏览 评论

mybatis在xml的if条件判断中出现There is no getter for property named 'parentMenuid' in 'class java.lang.Integer' 这样的错误,小编的错误代码如下:

mapper接口部分:

List<Category> selectAllCategory(Integer parentMenuid);

mybatis xml配置文件是这样写的:

<select id="selectAllCategory" parameterType="java.lang.Integer" resultMap="ResultMapWithBLOBs">
	<choose>
		<when test="parentMenuid != null">
			select * from category where parent_menuid = #{parentMenuid,jdbcType=INTEGER}
		</when>
		<otherwise>
			select * from category
		</otherwise>
	</choose>
</select>

它在判断“parentMenuid != null”这里出现了上述的错误,如果你mapper接口传入的是String字符串参数,就会报There is no getter for property named 'parentMenuid' in 'class java.lang.String' 这样的错误,但错误原因都是一样的,都是因为无法映射parentMenuid这个key

错误解决方案有三种:

方案一:将mapper接口参数前面添加@Param注解区分,让它知道这个key,适合于多参数的时候出现上述的错误,代码如下:

List<Category> selectAllCategory(@Param("parentMenuid") Integer parentMenuid);

方案二:将mapper中的parentMenuid参数放到param这个Map对象中,以Map对象的形式传入,例如要传入的参数是“88888”:

param.put("parentMenuid","88888");

List<Category> selectAllCategory(Map<String,Object> param);

然后将mybatis xml部分的parameterType改成如下这样即可,其它地方不变:

parameterType="java.util.Map"

方案三:如果只传入一个参数,则可以将“parentMenuid != null”判断部分用_parameter来代替参数名,其它地方不变,代码如下:

<select id="selectAllCategory" parameterType="java.lang.Integer" resultMap="ResultMapWithBLOBs">
	<choose>
		<when test="_parameter != null">
			select * from category where parent_menuid = #{parentMenuid,jdbcType=INTEGER}
		</when>
		<otherwise>
			select * from category
		</otherwise>
	</choose>
</select>

完毕!

来源网站:太平洋学习网,转载请注明出处:http://www.tpyyes.com/a/javaweb/777.html

与本文相关的文章

发表我的评论
取消评论

表情

您的回复是我们的动力!

  • 昵称 (必填)

网友最新评论