如
Department {
Department parentDepartment;
}
如果设置查询映射
<!--查看指定部门-->
<select id="selectDepartmentByPrimaryKey" resultMap="departmentResult" parameterClass="integer">
select DEPARTMENTID, SCHOOLID, PDEPARTMENTID,DEPARTMENTNAME, DEPARTMENTDESCRIBE, DEPARTMENTCODE
from S_DEPARTMENT
where DEPARTMENTID = #departmentId#
</select>
<resultMap id="departmentResult" class="org.dreamfly.core.model.Department">
<result property="departmentId" column="DEPARTMENTID"/>
<result property="school" column="SCHOOLID" select="selectSchoolByPrimaryKey"/>
<result property="pdepartment" column="PDEPARTMENTID" select="
selectDepartmentByPrimaryKey"/>
<result property="departmentName" column="DEPARTMENTNAME"/>
<result property="departmentDescribe" column="DEPARTMENTDESCRIBE"/>
<result property="departmentCode" column="DEPARTMENTCODE" />
</resultMap>
这样会导致查询进入死循环.查询会一直查找他的父部门类
解决方案
<resultMap id="departmentResult" class="org.dreamfly.core.model.Department">
<result property="departmentId" column="DEPARTMENTID"/>
<result property="school" column="SCHOOLID" select="selectSchoolByPrimaryKey"/>
<result property="pdepartment" column="PDEPARTMENTID" select="
selectParentDepartmentByPrimaryKey"/>
<result property="departmentName" column="DEPARTMENTNAME"/>
<result property="departmentDescribe" column="DEPARTMENTDESCRIBE"/>
<result property="departmentCode" column="DEPARTMENTCODE" />
</resultMap>
加上一个
<!--查询上级部门,不查询上级部门的上级部门-->
<select id="selectParentDepartmentByPrimaryKey" resultClass="org.dreamfly.core.model.Department" parameterClass="integer"
cacheModel="otherCodeCache">
select DEPARTMENTID, DEPARTMENTNAME, DEPARTMENTDESCRIBE, DEPARTMENTCODE
from S_DEPARTMENT
where DEPARTMENTID = #departmentId#
</select>
分享到:
相关推荐
在 MyBatis 中,我们可以使用两种方式来指定查询结果的返回类型,一种是使用 resultType,另一种是使用 resultMap。其中,resultType 是直接指定返回类型的,而 resultMap 则是对外部 ResultMap 的引用。 当我们...
- **一对多关联映射**:类似地,如果一个实体类包含多个其他实体类实例,可以使用collection标签来处理。 - **自定义类型处理器**:对于特殊的数据类型,如日期、货币等,可以通过typeHandler来定义自定义的类型...
在博客文章“https://724073277.iteye.com/blog/1479584”中,作者可能详细讨论了如何使用ResultMap来处理复杂的情况,包括自关联(如树形结构)、多层嵌套和动态ResultMap的运用。通过阅读这篇博客,你可以了解到更...
本篇将深入探讨MyBatis中的ResultMap,包括其重要性、使用方式以及一些高级特性。 ResultMap的概念: ResultMap是MyBatis映射语句中用于定义结果集映射的元素。它允许我们精确控制如何将数据库查询的结果行映射到...
当ResultMap包含多个字段时,MyBatis会自动处理这些字段并将它们拼接到INSERT语句中。比如,假设我们有以下CwInfo实体类: ```java public class CwInfo { private String id; private String name; private ...
在这个例子中,`resultMap`定义了一个User对象的映射规则,包括主键、姓名和邮箱字段,并且通过`association`标签映射了一个Address对象。 **MyBatis缓存** MyBatis提供了两种级别的缓存:一级缓存和二级缓存。一级...
mybatis中resultmap详细使用说明
`RuleVO` 类中包含了一个`idDetail`字段,它用于关联到`DetailVO`中的`idDetail`字段,从而建立两个类之间的联系。 #### resultMap配置 接下来,在MyBatis的映射文件中定义了`resultMap`元素,用于描述数据库结果...
`<resultMap>`节点还可以包含`<constructor>`来指定使用构造函数注入对象。 在解析过程中,MyBatis会构建`ResultMap`对象,并添加`ResultMapping`实例。如果存在`extends`属性,MyBatis会查找并合并父`resultMap`的...
mybatis中mapper文件resultMap中collection和association的使用,参考地址:https://blog.csdn.net/zhizhuodewo6/article/details/82863452
* nested result mappings - 几个 resultMap 自身嵌套关联,也可以引用到一个其它上 5. collection - 复杂类型集合 * collection of complex types 6. nested result mappings - resultMap 的集合,也可以引用到一...
- **resultMap**:`resultMap`则更加灵活,可以处理复杂的数据映射,包括一对一、一对多、多对一、多对多关系。例如,如果`User`类有一个`List<Order>`类型的属性`orders`,我们可以定义一个`resultMap`: ```xml...
如果我们的数据库中的列名和实体类的属性名是一致的,那么使用resultType即可,但是如果我们的数据库中的列名和实体类的属性名不一致,那么我们需要使用resultMap来定义映射关系。 在MyBatis中,我们可以在mapper....
在MyBatis中,`resultType` 和 `resultMap` 是两种不同的方式,用于处理SQL查询结果到Java对象的映射。理解它们的区别对于优化MyBatis映射文件的编写和提升代码的可维护性至关重要。 1. **resultType**: - `...
结合ResultMap,我们可以定义复杂的结果映射规则,包括一对一、一对多、多对多关系的映射,以及自定义的类型转换,进一步提升数据访问的便捷性。 在MyBatis3版本中,这些特性得到了更好的支持和优化,使得开发者...