【Mybatis】前端傳入參數傳入子查詢

業務描述:css

經過用戶code查詢資源菜單,Mybatis中用子查詢查詢子級菜單,須要傳入用戶code進行查詢,用戶code爲登陸token獲取前端

表結構:java

表1:資源表 permission_infojson

表2:角色資源中間表 role_permissionurl

表3:用戶角色表中間表 member_rolespa

思路:3d

1. 經過用戶code連表查詢父類菜單codecode

2. 經過父類code查詢子菜單blog

3. 經過傳入用戶code查詢再次查詢用戶code,傳入子查詢token

4.子查詢再經過父類code和用戶code查詢用戶資源

實現:

<!--查詢用戶資源父類列表-->
 <resultMap id="queryUserPermissionMap" type="com.alibaba.fastjson.JSONObject">
     <result column="permission_url" property="permissionUrl"/>
     <result column="permission_type" property="permissionType"/>
     <result column="permission_description" property="permissionDescription"/>
     <result column="permission_parent_code" property="permissionParentCode"/>
     <result column="permission_code" property="permissionCode"/>
     <collection property="children" column="{permissionParentCode=permission_parent_code,accountCode=accountCode}" javaType="List" select="queryUserPermissionChild">
         <result column="permission_url" property="permissionUrl"/>
         <result column="permission_type" property="permissionType"/>
         <result column="permission_description" property="permissionDescription"/>
         <result column="permission_code" property="permissionCode"/>
     </collection>
 </resultMap>
 <select id="queryUserPermission" parameterType="Map" resultMap="queryUserPermissionMap">
     SELECT
         permission_url,
         permission_type,
         permission_description ,
         permission_parent_code ,
         permission_code,
         (select account_code from member_role where account_code = #{accountCode} Limit 1) as accountCode
     FROM
         permission_info
     WHERE
         state = 1
     AND
         is_menu = 1
     AND
         permission_code
     IN (
         SELECT
             permission_code
         FROM
             role_permission
         WHERE
             role_code
     IN (
         SELECT
             role_code
         FROM
             member_role
         WHERE
             account_code = #{accountCode}))
 </select>

 <!--查詢用戶資源子類列表-->
 <select id="queryUserPermissionChild" parameterType="Map" resultType="com.alibaba.fastjson.JSONObject">
     SELECT
        permission_url ,
        permission_type ,
        permission_description ,
        permission_code
     FROM
         permission_info
     WHERE
         state = 1
     AND
         is_menu = 1
     AND
         permission_parent_code = #{permissionParentCode}
     AND
         permission_code
     IN (
         SELECT
             permission_code
         FROM
             role_permission
         WHERE
             role_code
     IN (
         SELECT
             role_code
         FROM
             member_role
         WHERE
             account_code = #{accountCode}))

 </select>

結果:

{
    "msg": "成功",
    "errorCode": 400,
    "timestamp": 1603077313,
    "data": [
        {
            "permissionType": 1,
            "permissionParentCode": "0",
            "children": [
                {
                    "permissionType": 1,
                    "permissionUrl": "23232",
                    "permissionCode": "6cc8ee8ae88d49ceadab8e0bba926a05",
                    "permissionDescription": "系統管理"
                },
                {
                    "permissionType": 2,
                    "permissionUrl": "ccccssss",
                    "permissionCode": "40a03ff44c07436091b1982c12daa96e",
                    "permissionDescription": "3"
                }
            ],
            "permissionUrl": "23232",
            "permissionCode": "6cc8ee8ae88d49ceadab8e0bba926a05",
            "accountcode": "c329bf698013445c9eb61bae67c14d80",
            "permissionDescription": "系統管理"
        },
        {
            "permissionType": 2,
            "permissionParentCode": "505c11e9125d425d92aa1689c718b9a2",
            "children": [
                {
                    "permissionType": 2,
                    "permissionUrl": "二級菜單地址111我QQ翁羣",
                    "permissionCode": "9d4ffadcf2584752b438c0dbfef551ac",
                    "permissionDescription": "分銷管理的名字暗示法as   "
                }
            ],
            "permissionUrl": "二級菜單地址111我QQ翁羣",
            "permissionCode": "9d4ffadcf2584752b438c0dbfef551ac",
            "accountcode": "c329bf698013445c9eb61bae67c14d80",
            "permissionDescription": "分銷管理的名字暗示法as   "
        },
        {
            "permissionType": 2,
            "permissionParentCode": "0",
            "children": [
                {
                    "permissionType": 1,
                    "permissionUrl": "23232",
                    "permissionCode": "6cc8ee8ae88d49ceadab8e0bba926a05",
                    "permissionDescription": "系統管理"
                },
                {
                    "permissionType": 2,
                    "permissionUrl": "ccccssss",
                    "permissionCode": "40a03ff44c07436091b1982c12daa96e",
                    "permissionDescription": "3"
                }
            ],
            "permissionUrl": "ccccssss",
            "permissionCode": "40a03ff44c07436091b1982c12daa96e",
            "accountcode": "c329bf698013445c9eb61bae67c14d80",
            "permissionDescription": "3"
        }
    ]
}

備註:記錄如今的方法,考慮子查詢直接獲取前端傳入參數

相關文章
相關標籤/搜索