admin管理员组文章数量:1642488
Caused by: org.apache.ibatis.reflection.ReflectionException: There is no getter for property named ‘xxxxx’
Mybatis Plus有很多情况报以上错误,这里总结一下遇到过的。
这里还有一个最可能出错的问题,即引用包的问题一般默认引用ibatis的包,包引用混了,很容易出现下面的问题,并且两个包入参装配的方式完全是反的
import org.apache.ibatis.annotations.Param;
import io.lettuce.core.dynamic.annotation.Param;
-
入参对象中没有get set方法
入参对象类中,对入参SET GET,或者使用lombok @Data注解即可解决
public class ListBrowseStatisticInfoVO { @NotNull(message = "文章id不能为空") @ApiModelProperty(name = "textId", value = "文章id") private Integer textId; @NotEmpty(message = "发布链接地址不能为空") @ApiModelProperty(name = "actualUrl", value = "发布链接地址") private String actualUrl; @ApiModelProperty(name = "startDate", value = "开始时间 格式:yyyy-MM-dd") private String startDate; @ApiModelProperty(name = "endDate", value = "结束时间 格式:yyyy-MM-dd") private String endDate; }
-
IPage分页查询,查询条件赋值时带有入参对象别名 [别名.name],Mapper映射没对应映射别名
在Mapper中,使用@Param(“listRedPacketDrawVO”)映射入参对象别名即可解决
/** *报错代码 **/ IPage<ListRedPacketDrawDO> listRedPacketDrawDetail(Page page, ListRedPacketDrawVO listRedPacketDrawVO); -- sql SELECT crerr.ms_uuid userId, crerr.receive_amount drawMoney, mc.name channel, mp.`name` platform, crerr.created_at `desc` FROM cms_red_envelope_receive_record crerr LEFT JOIN ms_platform mp ON mp.platform_id = crerr.platform LEFT JOIN ms_channel mc ON mc.channel_id = crerr.channel WHERE 1=1 AND crerr.red_envelope_code = #{listRedPacketDrawVO.id} AND crerr.red_envelope_type = #{listRedPacketDrawVO.type} /** * 正确写法 **/ IPage<ListRedPacketDrawDO> listRedPacketDrawDetail(Page page, @Param("listRedPacketDrawVO")ListRedPacketDrawVO listRedPacketDrawVO);
-
不带分页的条件查询,在sql中写了对象别名
去除sql中的对象别名即可解决
/** * 错误代码 **/ List<ListBrowseStatisticsDO> listBrowseStatisticInfo(ListBrowseStatisticInfoVO listBrowseStatisticInfoVO); SELECT browse_pv_num browseNum, browse_uv_num visitorNum, share_uv_num sharePersonNum, share_pv_num shareNum, biz_date businessDate FROM cms_text_analyse_day WHERE cms_text_id = #{listBrowseStatisticInfoVO.textId} AND actual_url = #{listBrowseStatisticInfoVO.actualUrl} -- 正确的传值 WHERE cms_text_id = #{textId} AND actual_url = #{actualUrl}
-
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException: Parameter ‘id’ not found. Available parameters are [listRedPacketDrawVO, page, param1, param2]
sql中不带对象别名报错-- 错误写法 IPage<ListRedPacketDrawDO> listRedPacketDrawDetail(Page page, ListRedPacketDrawVO listRedPacketDrawVO); SELECT crerr.ms_uuid userId, crerr.receive_amount drawMoney, mc.name channel, mp.`name` platform, crerr.created_at `desc` FROM cms_red_envelope_receive_record crerr LEFT JOIN ms_platform mp ON mp.platform_id = crerr.platform LEFT JOIN ms_channel mc ON mc.channel_id = crerr.channel WHERE 1=1 AND crerr.red_envelope_code = #{id} AND crerr.red_envelope_type = #{type} -- 正确写法 AND crerr.red_envelope_code = #{listRedPacketDrawVO.id} AND crerr.red_envelope_type = #{listRedPacketDrawVO.type}
以上总结了几个常见的Mybatis plus传值问题,以上问题本地测试可能没问题,一上服务器就各种西西。
总的说就是:分页查询在Mapper中要映射别名,xml中使用别名.name
普通的条件查询,Mapper中映射一波别名,xml中直接写条件,不用别名
本文标签: ApacheibatisCausedorgreflection
版权声明:本文标题:Caused by: org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dongtai/1729340310a1197458.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论