MyBatis実装は、次のようにツリー構造データを詳細に読み取ります。
テーブル構造
テーブル「lscrm_function_privilege」( `id` int(10)unull null auto_incrementコメント「番号」、` create_id` varchar(30)not null default 'sys'、 `update_id` varchar(30)noll default 'sys'、` create not not null defactamp `create_timtimtamp 'create null null default current current_timestamp on current current_timestampコメント「変更時間」、「有効性」、「妥当性」、tinyint(3)null not noll default '1'コメント '有効性1。有効0。 null noll default '0'コメント「親ノード」、「is_leaf_node」tinyint(3)null dote noll default '1'はリーフノードです。符号なしnot null default '0'コメント 'サブシステム'、 `is_hidden`tinyint(3)unsigned not null default ''コメント 'はUIが隠されていますか? UI 'に表示されていません、プライマリキー( `id`))エンジン= innodb auto_increment = 22デフォルトcharset = utf8 comment =' customer.add 'などの親コードに従ってサブコードcreate /r /n
データを構築します
「lscrm_function_privilege」値( '1'、 'sys'、 'sys'、 'sys'、 'sys'、 'sys'、 'sys'、 'sys'、 '' 2016-09-07 15:21:17 '、' 1、 'web.permission'、 'permission management'、 '' '' '1' '' '' ins '、' 1 'ins') `lscrm_function_privilege`値( '2'、 'sys'、 'sys'、 '2016-09-07 15:21:12'、 '2016-09-07 15:21:40'、 '1'、 'web.permission.user-mgmt'、 'inters' '' '' '' 1 '' 1 '1、 `lscrm_function_privilege`値( '3'、 'sys'、 'sys'、 '2016-09-07 15:22:16'、 '2016-09-07 15:22:35'、 '1'、 'web.permission.user-mgmt.add'、 '' '') '1' 1 '1' 1 '1' 1 '' 1 '1' '1' 1 '' 1 '' 1 '1' '1' '1' '1' 1 `lscrm_function_privilege`値( '4'、 'sys'、 'sys'、 '2016-09-07 15:23:17'、 '2016-09-07 15:23:17'、 '1'、 'web.permission.user-mgmt.modify'、 '' int '' '1' 1. `lscrm_function_privilege`値( '5'、 'sys'、 'sys'、 'sys'、 '2016-09-07 16:10:37'、 '2016-09-07 16:10:42'、 '1'、 'app.customer'、 'customer management'、 '' '' '' 2 '); insits'); `lscrm_function_privilege`値( '6'、 'sys'、 'sys'、 'sys'、 'sys'、 '2016-09-07 16:11:06'、 '2016-09-07 16:10 'lscrm_function_privilege`値(' 7 '、' sys '、' sys '、' '2016-09-07 16:11:06'、 '2016-09-07 16:11:20'、 '1'、 'app.customer.modify'、 '5'、 '' lsccrm__funtis '); ( '8'、 'sys'、 'sys'、 '2016-09-07 16:12:33'、 '2016-09-07 16:14:10'、 '1'、 'app.customer.viewdetail'、 'view customer details'、 '5'、 '1'、 '2'); 'Sys'、 'Sys'、 '2016-09-07 16:12:33'、 '2016-09-07 16:12:33'、 '1'、 'app.customer.addvisit'、 'visit'、 '5'、 '1'、 '2'、 '0 'sys'、 '2016-09-07 16:13:59'、 '2016-09-07 16:14:17'、 '1'、 'app.customer.viewdemand'、 'View Customer Procurement Recomations'、 '5'、 '1'、 '2'、 '0'); 'sys'、 '2016-09-07 16:13:59'、 '2016-09-07 16:14:17'、 '1'、 'app.customer.vieworder'、 'customer order'、 '5'、 '1'、 '2'、 '0'); '2016-09-07 16:13:59'、 '2016-09-07 16:14:17'、 '1'、 'app.customer.viewshop'、 'customer order'、 '5'、 '1'、 '2'、 '0'); '2016-09-07 16:17:28'、 '2016-09-07 16:18:39'、 '1'、 'app.customer.viewreply'、 'view grab list'、 '5'、 '1'、 '2'、 '0'); '2016-09-07 16:19:32'、 '2016-09-07 16:23:51'、 '1'、 'app.customer.fastopenshop'、 'Quick Store Opening'、 '5'、 '1'、 '2'、 '0'); '2016-09-07 16:22:33'、 '2016-09-07 16:22:33'、 '1'、 'app.demand'、 'demand'、 '' '0、' 2 '、' 0 '); 16:23:21 '、' 2016-09-07 16:23:21 '、' 1 '、' app.demand.private '、' private Sea demand '、' 15 '、' 1 '1'、 '2'、 '0'); 16:23:58 '、' 2016-09-07 16:23:58 '、' 1 '、' app.demand.feedback '、'ページフィードバック '、' 15 '、' 1 '、' 2 '、' 0 '); '1'、 'app.demand.pushsearch'、 'pull seller search'、 '15'、 '1、' 1、 '' ''); 'into' 1 '、' 1 '、' 1 '、' 1 '、' 1 '、' 1、 '1'、 '1'、 '1' 1 '、' 1 '1'、' 1 '1'、' 1 '、' 1 '1'、 '1'、 '1'、 '1'); `lscrm_function_privilege`値( '21'、 '1、' 1 '、' 1 '、' 1 '、' 1 '、' 1、 '1'、 '1'、 '1'、 '1'、 '1'、 '1'、 '1'、 '1' 1 '1'、 '1' 1'、 '1' 1 '、' 1 '1'、 '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1'、 '1'、 '1'、 '1'、 '1'、 '1'、 '1'、 '1、' 1、 '1'、 '1'、 '1'、 '1'、 '1、' 1 '、' 1 '、' 1 '、' 1 '、' 1 '、' 1 '、' 1 '、' 1 '1'、 '1' 1 '、' 1 '、' 1 '、' 1 '、' 1 '、' 1 '、' 1 '、' 1 '、' 1 '、' 1 '、' 1 '、' 1 '、' 1 '、' 1 '1'、 「パフォーマンスデータを表示」、「20」、「1」、「2」、「0」);
エンティティビーン
パッケージcom.lianshang.crm.biz.entity; import com.google.common.base.moreobjects; import java.util.arraylist; import java.util.date; import java.util.list; public class lscrmfunctionprivilegeentity {/** private int id; private int id; private int id; private intid createTime;/**変更時間**/プライベートデートupdateTime = new date();/**有効性1. valid0。無効**/プライベートINT有効性= 1;/**エンコード**/プライベート文字列コードノード)。子ノードを追加する場合、parent_id is_leaf_nodeを0 **/private int isleafnode;/**関連サブシステム**/private int subsystemid;/**に設定する必要があります。 ui **/private int ishidden = 1; private list <lscrmfunctionprivilegeentity> privilegelist = new arrayList <>(); // get()/set()省略されていません。 。 。 }パッケージcom.lianshang.crm.biz.entity; import java.util.arraylist; import java.util.date; import java.util.list;/*** 2016/9/8。 time **/private date updateTime = new date();/**有効性子ノードを追加する場合、parent_id is_leaf_nodeを0 **/private int isleafnode;/**関連サブシステム**/private int subsystemid;/**に設定する必要があります。 ui **/private int ishidden = 1; private list <lscrmfunctionprivilegeentity> privilegelist = new arraylist <>();}に表示されません。マッパー構成
<?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.lianshang.crm.biz.dao.lscrmfunctionpriviledao"> <cacheeviction = "fifo" flushinterval = "60000" size = "1024" readonly = "true"/> <resultmap id = "lscrmfunction" lscrmfuntult "lscrmfungeyプロパティ= "id" column = "id"/> <respurentプロパティ= "createid" column = "create_id"/> <respurentプロパティ= "updateid" column = "update_id"/> <respropert property = "createTime" column = "create_time"/> <result property = "updateTime" column = "update_time"/>> <resultプロパティ " column = "function_name"/> <resultプロパティ= "parentid" column = "parent_id"/> <result property = "isleafnode" column = "is_leaf_node"/> <resperプロパティ= "subsystemid" column = "sub_system_id"/> <resultプロパティ= "ishidden" column = "is_hidden"/>> <resultプロパティ=プロパティ= "subprivilegesResult" type = "lscrmfunctionprivilegeentity" extends = "lscrmfunctionprivilegeresult"> <collection property = "privilegelist" javatype = "java.util.arraylist" column = "id" oftype = " select = "SelectSubprivileges"> </collection> </resultMap> <resultMap> <resultMap = "lscrmfunctionprivilegetreeresult" type = "lscrmfunctionprivilegetree" extends = ""> <! - <association Property = "functionprivilegegent =" javatepe = "lscrmgegent =" lscrmgeent resultmap = "lscrmfunctionprivileSult"/> - > <collectionプロパティ= "javatype =" java.util.arraylist "column =" id "oftype =" lscrmfunctionprivilegeentity "select =" selectsubpriveges "> </resultmap> </resultmap> id = "tbl_name"> lscrm_function_privilege </sql> <sql id = "role_privilege_tbl_name"> lscrm_role_privilege </sql> <sql id = "select_sql"> "select_sql"> is_leaf_node、sub_system_id、is_hiddiden <include defid = "tbl_name"/> </sql> <select id = "readallprivileges" resultmap = "lscrmfunctionprivilegetreeresult" usecache = "true"> <inclued = "select =" subsid = "" sub_system_id =#{subsystemid} </if> </select> <select id = "selectsubprivileges" resultmap = "subprivilegesResult"> <include refid = "select_sql"/> where where_id =#{id} </select> </mapper>パッケージcom.lianshang.crm.api.dto.lscrmfunctionprivilege; Import com.lianshang.crm.biz.entity.lscrmfunctionprivilegeentity; Import com.lianshang.crm.biz.entity.lscrmfunctionprivilegetree; Import.apach.apach.batis.Annotation.Annotation.Annotation.Annotation.Annotation.Partis.Paris.Parim lscrmfunctionpriviledao {list <lscrmfunctionprivilegetree> readallprivileges(@param( "subsystemid")int subsystemid);}サービス
パッケージcom.lianshang.crm.biz.service.impl; Import com.alibaba.fastjson.json; Import com.google.common.base.function; Import com.lianshang.common.utils.general.generalult; Import com.lianshang.common.utils.generer.guavautil; com.lianshang.common.utils.general.stringutil; Import com.lianshang.crm.api.dto.lscrmfunctionprivilege;インポートcom.lianshang.crm.api.service.lscrmfunctionprivilegeservice; com.lianshang.crm.biz.entity.lscrmfunctionprivilegeentity; Import com.lianshang.crm.biz.entity.lscrmfunctionPrivilegetree; Import org.springframework.beans.factory.annotation.autowired; Import java.util.util.util. java.util.list; import static com.google.common.collect.fluentiterable.from; public class lscrmfunctionprivilegeServiceimplを実装するlscrmfunctionprivilegeservice {@autowiredprivate lscrmfunctionprivedao readallprivileges(int subsystemid){list <lscrmfunctionprivilegetree> priveilegetrees = lscrmfunctionprivilegedao.readallprivileges(sub -systemid); return new generalResult <>(json.tojsonstring(privilegetrees);}}}}返品結果
[{"code": "web.permission"、 "createid": "sys"、 "createtime":1473232840000、 "functionname": "permission management"、 "hidden":0、 "id":1、 "leafnode":0、 "parentid":0、 "" primilegelist ":" web "" code ":" code ":" code ":" web code ":" web code ":" web code ":" web code " "sys"、 "createTime":1473232872000、 "functionname": "user management"、 "hidden":0、 "id":2、 "leafnode":0、 "dartid":1、 "privilegelist":[{"code": "web.peritions.user-mgmt.addddddddd"、 "" 1473232936000、 "functionname": "new user"、 "hidden":0、 "id":3、 "leafnode":1、 "parentid":2、 "privilegelist":[]、 "sub -Systemid":1、 "updateId": "sys"、 "updatem":14732955000: "1}、" 1} "web.permission.user-mgmt.modify"、 "createid": "sys"、 "createtime"、functionname ":" modify user "、" hidden ":0、":4、 "leafnode":1、 "parentid":2、 "uptileid":[]、 " "sys"、 "updatetime":1473232997000、 "妥当性":1}]、 "subsystemid":1、 "updateid": "sys"、 "updateTime":1473232900000、 "有効性":1}]、 "subsystemid":1、 "sys" 1473232877000、「有効性」:1}]上記は、紹介されたMybatis読み取りツリー構造データの実装のための例コードです。それがあなたに役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!