今天来分享一下让人让我有点抓脑的问题!!
这一阵子都在自学Mybatis,昨天学的多表查询,多对一的关系查询中出现了一个报错,其实也是很简单的问题,但稍不注意就会让人抓耳挠腮。
在数据库的字段名中有些事下划线命名,而对应的实体类一般会是驼峰命名,解决字段名和属性名不一致的方法有三种:
a->:为字段起别名
b->:
设置全局变量,将自动映射为驼峰 <setting name="mapUnderscoreToCamelCase" value="true"/>
c->:
设置resultMap
<resultMap id="empResultMap" type="Emp">
<id property="eid" column="eid"></id>
<result property="empName" column="emp_name"></result>
<result property="age" column="age"></result>
<result property="sex" column="sex"></result>
<result property="email" column="email"></result>
</resultMap>
这里要注意的是:在mpMApper.xml写查询sql语句时,同一个方法的resultMap的值不能写多个,否则会出现 Mapped Statements collection already contains value
而且,每一条查询语句的resultMap都得有相对应的唯一的id,比如:
<resultMap id="getAssociationEmpAndDept" type="Emp">
这样会导致查找不到相应的resultMap :
Result Maps collection does not contain value for com.atguigu.mybatis.mapper.EmpMapper.getAssociationEmpAndDept
出现这样的报错一定要去仔细查找自己resultMap 设置得对应的id。