shiyunteng
2 天以前 c6db287f6c987060d615fd7ef5126511e051d5c6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 
<mapper namespace="com.by4cloud.platformx.device.mapper.DeviceClassMapper">
 
  <resultMap id="deviceClassMap" type="com.by4cloud.platformx.device.entity.DeviceClass">
        <id property="id" column="id"/>
        <result property="name" column="name"/>
        <result property="number" column="number"/>
        <result property="pNum" column="p_num"/>
        <result property="pId" column="p_id"/>
        <result property="depreciation" column="depreciation"/>
        <result property="beforeDate" column="before_date"/>
        <result property="remark" column="remark"/>
        <result property="createBy" column="create_by"/>
        <result property="createTime" column="create_time"/>
        <result property="updateBy" column="update_by"/>
        <result property="updateTime" column="update_time"/>
        <result property="delFlag" column="del_flag"/>
  </resultMap>
    <select id="selectEndNode" resultType="java.lang.Long">
        SELECT parent.id
        FROM (
                 SELECT t1.*
                 FROM device_class t1
                 WHERE FIND_IN_SET(t1.id, (
                     SELECT GROUP_CONCAT(id)
                     FROM (
                              SELECT id, IF(FIND_IN_SET(p_id, @pids) > 0, @pids := CONCAT(@pids, ',', id), 0) AS is_child
                              FROM device_class, (SELECT @pids := #{classId}) tmp
                              ORDER BY p_id
                          ) t
                     WHERE is_child != 0
                     )) OR t1.id = #{classId}
             ) parent
                 LEFT JOIN device_class child ON parent.id = child.p_id
        WHERE child.id IS NULL;  -- 验证是否为末端节点
 
    </select>
</mapper>