Result Maps collection does not contain value for

测试Mybatis工程遇到的问题
映射配置文件:




    
    

报错信息:

Caused by: java.lang.IllegalArgumentException: Result Maps collection does not contain value for com.itheima.domain.User
    at org.apache.ibatis.session.Configuration$StrictMap.get(Configuration.java:888)
    at org.apache.ibatis.session.Configuration.getResultMap(Configuration.java:640)
    at org.apache.ibatis.builder.MapperBuilderAssistant.getStatementResultMaps(MapperBuilderAssistant.java:344)
    ... 12 more
resultMap导致了这个错误

基本映射 :(resultType)使用resultType进行输出映射,只有查询出来的列名和pojo中的属性名一致,该列才可以映射成功。(数据库,实体,查询字段,这些全部都得一一对应)高级映射 :(resultMap) 如果查询出来的列名和pojo的属性名不一致,通过定义一个resultMap对列名和pojo属性名之间作一个映射关系。(高级映射,字段名称可以不一致,通过映射来实现

resultType和resultMap功能类似 ,都是返回对象信息 ,但是resultMap要更强大一些 ,可自定义。因为resultMap要配置一下,表和类的一一对应关系,所以说就算你的字段名和你的实体类的属性名不一样也没关系,都会给你映射出来,但是,resultType就比较鸡肋了,必须字段名一样,比如说 cId和c_id 这种的都不能映射 。
参考:https://blog.csdn.net/xiao_xiao3601/article/details/92724587

————————————————————————————————————————————————
2020年1月17日17点16分 新bug


Caused by: java.lang.NoSuchMethodException: com.itheima.dao.IUserDao.()
Caused by: java.lang.NoSuchMethodException: com.itheima.dao.IUserDao.()
    at java.base/java.lang.Class.getConstructor0(Class.java:3354)
    at java.base/java.lang.Class.getDeclaredConstructor(Class.java:2558)
    at org.apache.ibatis.reflection.factory.DefaultObjectFactory.instantiateClass(DefaultObjectFactory.java:62)
    ... 21 more

这个错误有点弱智 但归根结底 是resultMap的bug

报错信息是找不到方法,确实IUserDao里没有这个方法。
因为resultMap返回的是User类型,所以根本就不是 resultType="com.itheima.dao.IUserDao">
而是我返回的类型的全限定类名

 

你可能感兴趣的:(Result Maps collection does not contain value for)