mybatis迭代循环查询任意级树形结构
一:实体类封装@JsonIgnoreProperties(value = { “hibernateLazyInitializer”, “handler” })避免查询死循环
public class LineLoss {
@ApiModelProperty(value=“租户ID”)
private String tenantId;
@ApiModelProperty(value=“线损分级id”)
private Long clId;
@ApiModelProperty(value=“线损分级父id”)
private Long clpId;
@ApiModelProperty(value=“线损分级名称”)
private String epTizone;
@ApiModelProperty(value=“线损分级级别(1,2,3,4)”)
private String depType;
@ApiModelProperty(value=“结构排序”)
private String startTime;
@JsonIgnoreProperties(value = { “hibernateLazyInitializer”, “handler” })
List children;
}
二:mybatis迭代查询
<resultMap id="BaseTreeResultMap" type="com.tl.sesa.server.model.LineLoss.LineLoss">
<result column="TENANT_ID" property="tenantId"/>
<result column="CL_ID" property="clId"/>
<result column="CL_P_ID" property="clpId"/>
<result column="EP_TIZONE" property="epTizone"/>
<result column="DEP_TYPE" property="depType"/>
<result column="START_TIME" property="startTime"/>
<collection column="CL_ID" property="children" javaType="java.util.ArrayList"
ofType="com.tl.sesa.server.model.LineLoss.LineLoss" select="getNextNodeTree"/>
</resultMap>
<resultMap id="NextTreeResultMap" type="com.tl.sesa.server.model.LineLoss.LineLoss">
<result column="TENANT_ID" property="tenantId"/>
<result column="CL_ID" property="clId"/>
<result column="CL_P_ID" property="clpId"/>
<result column="EP_TIZONE" property="epTizone"/>
<result column="DEP_TYPE" property="depType"/>
<result column="START_TIME" property="startTime"/>
<collection column="CL_ID" property="children" javaType="java.util.ArrayList"
ofType="com.tl.sesa.server.model.LineLoss.LineLoss" select="getNextNodeTree"/>
</resultMap>
<sql id="Base_Column_List">
TENANT_ID,
CL_ID,
CL_P_ID,
EP_TIZONE,
DEP_TYPE,
START_TIME
</sql>
<select id="getNextNodeTree" resultMap="NextTreeResultMap">
SELECT
<include refid="Base_Column_List"/>
FROM c_line_loss_info
WHERE CL_P_ID = #{CL_ID}
</select>
<select id="getNodeTree" resultMap="BaseTreeResultMap">
SELECT
<include refid="Base_Column_List"/>
FROM c_line_loss_info
WHERE CL_P_ID = #{clpId}
</select>