Mybatis默认采用ONGL解析参数,所以会自动采用对象树的形式取Integer.xxx。Integer对象没有xxx属性。如果不解析参数,mybatis自动识别传入的参数,不会报错。
解决办法
1.修改select语句:参数名全部改为_parameter
<select id="findByRoomName" parameterType="string" resultType="com.ambow.pojo.Dormitory">
SELECT * FROM "t_Dormitorys"
<if test="_parameter!=null and _parameter!='' ">
where "RoomName" like CONCAT(CONCAT('%',#{value}),'%')
</if>
</select>
2.不修改sql,只修改接口
public List<Dormitory> findByRoomName(@Param(value="name")String name) {
System.out.println("业务层,按房间号模糊宿舍...");
return dormitoryDao.findByRoomName(name);
}
(没写接口,用的实现类)
3.可以将参数包装在hashmap或者对象中作为参数
本文详细解析了MyBatis使用ONGM解析参数时出现的问题,特别是当参数为Integer对象且尝试访问不存在的属性时导致的错误。提供了三种解决方案,包括修改SQL语句、调整接口参数注解以及使用HashMap或自定义对象包装参数。
1800





