<del id="nnjnj"></del><track id="nnjnj"></track>

<p id="nnjnj"></p>

<address id="nnjnj"></address>

    <pre id="nnjnj"><pre id="nnjnj"></pre></pre>

      <noframes id="nnjnj"><ruby id="nnjnj"><ruby id="nnjnj"></ruby></ruby>

      • 自動秒收錄
      • 軟件:1973
      • 資訊:57811|
      • 收錄網站:279872|

      IT精英團

      教大家如何處理Spring Boot易流中的用戶和群體!

      教大家如何處理Spring Boot易流中的用戶和群體!

      瀏覽次數:
      評論次數:
      編輯: 陽煦
      信息來源: ITPUB
      更新日期: 2022-09-20 00:46:27
      摘要

      1.準備工作2.用戶操作2.1添加用戶2.2修改用戶2.3刪除用戶2.4查詢用戶3.組操作3.1添加組3.2修改組3.3刪除組3.4查詢組4.查看表詳情雖然說我們在實際開發中,

      • 正文開始
      • 相關閱讀
      • 推薦作品

      1.準備工作

      2.用戶操作

      2.1添加用戶

      2.2修改用戶

      2.3刪除用戶

      2.4查詢用戶

      3.分組操作

      3.1添加組

      3.2修改組

      3.3刪除組

      3.4查詢組

      4.檢查表格詳細信息。

      雖然我們在實際開發中很少直接使用flow中的用戶系統,但也不太可能完全用不到。畢竟官方設計的這個東西,它的存在必然有其合理性。所以,今天宋師兄就來跟大家聊聊如何在Spring Boot項目中添加、刪除、修改一個用戶或者組。

      1.準備工作

      首先,我們創建一個Spring Boot項目,引入Web依賴和MySQL驅動程序,如下所示:

      創建后,我們手動添加可流動依賴項,如下所示:

      屬國

      groupIdorg.flowable/groupId

      artifactId可流動-彈簧-啟動-啟動器/artifactId

      版本6 . 7 . 2/版本

      /依賴關系

      然后在屬性文件中配置數據庫連接信息:

      spring.datasource .用戶名=root

      spring.datasource.password=123

      spring . data source . URL=JDBC : my SQL :///flowerable-IDM?server time zone=Asia/Shanghai use SSL=false nullcatalogmenscurrent=true

      好了,準備工作完成了。

      2.用戶操作

      在Spring Boot,for已經默認為我們配置了IdentityService對象,我們只需要將它注入到項目中就可以使用了。

      讓我們看一些例子。

      2.1添加用戶

      @自動連線

      IdentityServiceidentityService;

      @測試

      voidcontextLoads(){

      useentityimpluser=newuseentityimpl();

      user . setid(' Java boy ');

      User.setDisplayName('江南一點雨');

      user . set password(' 123 ');

      user . set first name(' Java ');

      user . set last name(' boy ');

      user . set email(' Java boy @ QQ.com ');

      user . set revision();

      identityService.saveUser(用戶);

      }

      這些字段很容易理解,類似于宋歌之前所說的向網頁添加用戶。應該指出的是,修訂。

      的值為 0 表示這是一個新添加的用戶。

      添加之后,我們在數據庫的 ACT_ID_USER表中,就可以看到剛剛加入的數據了:

      2.2 修改用戶

      如果是修改用戶密碼,可以調用如下方法:

      @Test
      void test02() {
          UserEntityImpl user = new UserEntityImpl();
          user.setId("javaboy");
          user.setPassword("666");
          user.setRevision(1);
          identityService.updateUserPassword(user);
      }

      雖然這個方法名是 updateUserPassword,但是實際上這個也能修改其他屬性。

      這里有一個問題,就是用戶用到了樂觀鎖,所以修改的時候,要自己把 revision 寫對了,否則修改會失敗,然而我們往往并不記得 revision 是多少,所以最好是先查詢,后修改,如下:

      @Test
      void test03() {
          User u = identityService.createUserQuery().userId("javaboy").singleResult();
          u.setDisplayName("itboy");
          identityService.updateUserPassword(u);
      }

      如果是強行給一個不匹配的 revision,執行的時候會報如下錯誤:

      當然,修改用戶的時候也可以調用 saveUser 方法,這個方法會根據用戶 id 查詢用戶,如果用戶已經存在,則直接修改(修改 password 之外的其他屬性),否則就添加。

      2.3 刪除用戶

      這個比較簡單,可根據用戶 id 刪除一個用戶:

      @Test
      void test05() {
          identityService.deleteUser("javaboy");
      }

      2.4 查詢用戶

      查詢方式比較豐富,通過用戶的各個屬性都可以查詢,例如可以查詢所有姓張的用戶:

      @Test
      void test06() {
          List<User> list = identityService.createUserQuery().userDisplayNameLike("張%").orderByUserId().asc().list();
          for (User user : list) {
              System.out.println("user.getDisplayName() = " + user.getDisplayName());
          }
      }

      查詢所有的用戶:

      @Test
      void test07() {
          List<User> list = identityService.createUserQuery().list();
          for (User user : list) {
              System.out.println("user.getId() = " + user.getId());
          }
      }

      當然還有其他方法,包括排序、分頁等,基本上見名知意,我就不挨個演示了。

      如果你覺得這些方法調用起來費事,那么也可以直接上 SQL,這個底層數據庫操作用的 MyBatis,所以這個 SQL 中參數的寫法就按照 MyBatis 里邊的來即可:

      @Test
      void test08() {
          List<User> list = identityService.createNativeUserQuery().sql("select * from ACT_ID_USER where DISPLAY_NAME_ like #{name}").parameter("name", "李%").list();
          for (User user : list) {
              System.out.println("user.getId() = " + user.getId());
          }
      }

      有的時候,如果不記得表名,也可以按照如下方式現場根據類名查詢該類對應的表名,如下:


      @Test
      void test08() {
          List<User> list = identityService.createNativeUserQuery().sql("select * from "+idmManagementService.getTableName(User.class)+" where DISPLAY_NAME_ like #{name}").parameter("name", "李%").list();
          for (User user : list) {
              System.out.println("user.getId() = " + user.getId());
          }
      }

      好啦,用戶的增刪改查差不多就這些,用戶的這些搞明白了,接下來的就容易了。

      3. 組操作

      3.1 添加組

      組的屬性相對來說少一些,添加方式和 user 比較像:

      @Test
      void test09() {
          GroupEntityImpl g = new GroupEntityImpl();
          g.setName("組長");
          g.setId("leader");
          g.setRevision();
          identityService.saveGroup(g);
      }

      添加之后,組的信息保存在 ACT_ID_GROUP表中,如下圖:

      按照松哥之前在 flowable-ui 中給大家演示的,組創建好之后,接下來還要給組添加用戶,添加方式如下:

      identityService.createMembership("zhangsan", "leader");
      identityService.createMembership("lisi", "leader");

      這就是設置 zhangsan 和 lisi 是組長(注意用戶和組的關聯關系表中有外鍵,所以需要確保兩個參數都是真實存在的)。

      添加了關聯關系之后,我們再去查看 ACT_ID_MEMBERSHIP表,如下:

      掉用如下方法可以刪除關聯關系:

      identityService.deleteMembership("zhangsan","leader");

      3.2 修改組

      如下,將 id 為 leader 的組名更新為主管,如下:

      Group g = identityService.createGroupQuery().groupId("leader").singleResult();
      g.setName("主管");
      identityService.saveGroup(g);

      3.3 刪除組

      刪除組方式如下:

      identityService.deleteGroup("leader");

      刪除組的同時,也會刪除掉組和用戶之間的關聯關系,不過不用擔心用戶被刪除。

      3.4 查詢組

      可以根據 id 或者 name 或者組員信息等去查詢組:

      //根據 id 查詢組信息
      Group g1 = identityService.createGroupQuery().groupId("leader").singleResult();
      System.out.println("g1.getName() = " + g1.getName());
      //根據 name 查詢組信息
      Group g2 = identityService.createGroupQuery().groupName("組長").singleResult();
      System.out.println("g2.getId() = " + g2.getId());
      //根據用戶查詢組信息(組里包含該用戶)
      List<Group> list = identityService.createGroupQuery().groupMember("zhangsan").list();
      for (Group group : list) {
          System.out.println("group.getName() = " + group.getName());
      }

      4. 查看表詳情

      如果需要查看表詳情,可通過如下方式查看:

      @Test
      void test15() {
          //獲取系統信息,實際上是讀取 ACT_ID_PROPERTY 表的信息
          Map<String, String> properties = idmManagementService.getProperties();
          System.out.println("properties = " + properties);
          //獲取表的詳細信息
          TableMetaData tableMetaData = idmManagementService.getTableMetaData(idmManagementService.getTableName(User.class));
          //獲取表名
          System.out.println("tableMetaData.getTableName() = " + tableMetaData.getTableName());
          //獲取列名
          System.out.println("tableMetaData.getColumnNames() = " + tableMetaData.getColumnNames());
          //獲取列的類型
          System.out.println("tableMetaData.getColumnTypes() = " + tableMetaData.getColumnTypes());
      }

      好啦,差不多就這些內容吧,如果我們想要使用自己的用戶體系,又不想拋棄 flowable 的用戶,那么可以按照如上方式,在添加系統本地用戶的時候,也往 flowable 中添加/更新用戶。

      標簽:用戶 方式 信息
      從PG15開始WAL壓縮優化
      ? 上一篇 2022-09-20
      國產核心板全志T507助力消防系統升級
      下一篇 ? 2022-09-20
      • 如何在Ubuntu中保留文件系統并備份當前開發板鏡像
        0閱讀 0條評論 個贊
        在Ubuntu保留文件系統或者說備份當前開發板鏡像的需求在不斷增加。比如Ubuntu文件系統需要安裝庫文件的話直接使用apt-get工具就可以下載,但由于需要下載的核心板較多,比較費時間,這時需要將安……
      • 國產核心板全志T507助力消防系統升級
        0閱讀 0條評論 個贊
        9月16日下午,位于湖南長沙市區內的中國電信大樓發生火災,建筑高度218米,現場濃煙滾滾,數十層樓體燃燒劇烈。消防救援人員趕到現場后很快將火勢控制住,目前大樓火勢已被撲滅,所幸未發現人員傷亡。湖南電信……
      • 從PG15開始WAL壓縮優化
        0閱讀 0條評論 個贊
        PG15傳聞中的超級令人激動的功能大多數跳票了,年初我也寫過一個關于PG15新功能跳票的文章。PG15BETA已經發出幾個月了,似乎PG15里令人激動人心的功能不多,不過從長長的新功能列表里,……
      • 深入了解美團葉子發射器開源方案
        0閱讀 0條評論 個贊
        大家好,我是樹哥。之前我們有聊過「如何設計一個分布式ID發號器」,其中有講過4種解決方案,分別是:UUID類雪花算法數據庫自增主鍵Redis原子自增美團以第2、3種解決方案為基礎,開發出……
      • 內存泄漏——原因、避免和位置
        0閱讀 0條評論 個贊
        .css-1yuhvjn{margin-top:16px;}.css-3jt6os.FileLinkCard{-webkit-align-items:center;-webkit-box-align……
      發表評論 共有條評論
      用戶名: 密碼:
      驗證碼: 匿名發表
      • 用戶自定義注釋 AOP實現的日志保存(數據庫) 所有代碼都可以粘貼復制
        0閱讀 0條評論 個贊
        前言1,在一些特定的場景我們往往需要看一下接口的入參,特別是跨系統的接口調用(下發,推送),這個時候的接口入參就很重要,我們保存入參入庫,如果出問題就可以馬上定位是上游還是下游的問題(方便扯皮)2,還……
      • 你知道信息架構圖和功能架構圖的區別嗎?
        0閱讀 0條評論 個贊
        .css-1yuhvjn{margin-top:16px;}.css-3jt6os.FileLinkCard{-webkit-align-items:center;-webkit-box-align……
      • 教大家如何處理Spring Boot易流中的用戶和群體!
        0閱讀 0條評論 個贊
        1.準備工作2.用戶操作2.1添加用戶2.2修改用戶2.3刪除用戶2.4查詢用戶3.組操作3.1添加組3.2修改組3.3刪除組3.4查詢組4.查看表詳情雖然說我們在實際開發中,……
      • 如何使用helm優雅地安裝prometheus-operator并監控k8s集群微服務
        0閱讀 0條評論 個贊
        前言:隨著云原生概念盛行,對于容器、服務、節點以及集群的監控變得越來越重要。Prometheus作為Kubernetes監控的事實標準,有著強大的功能和良好的生態。但是它不支持分布式,不支持數據……
      • 國產超級大腦———rk 3568核心板!
        13閱讀 0條評論 個贊
        從1956年麥卡錫首次提出“人工智能(AI)”的概念至今,人工智能已有66年的歷史,而人工智能真正的崛起卻是在最近的10年。隨著消費電子行業的快速發展和激烈競爭,人工智能再度流行起來,盡管許多企業對A……
      • 詳細解釋MySQL隔離級別
        0閱讀 0條評論 個贊
        一個事務具有ACID特性,也就是(Atomicity、Consistency、Isolation、Durability,即原子性、一致性、隔離性、持久性),本文主要講解一下其中的Isolation,也……
      • 全網最全Linux命令匯總!(史上最全 推薦收藏)
        7閱讀 0條評論 個贊
        今天,給小伙伴們帶來一篇史上最全Linux命令總結的文章,命令有點多,建議小伙伴們先收藏后閱讀。好了,我們開始今天的正文。列出目錄內容ls-a:顯示所有文件(包括隱藏文件);ls-l:顯示詳細……
      • 構建docker鏡像庫(1):用注冊表構建本地鏡像庫
        0閱讀 0條評論 個贊
        目錄一.系統環境二.前言三.使用registry搭建私有鏡像倉庫3.1環境介紹3.2k8smaster節點配置鏡像倉庫3.3k8sworker1節點配置從私有倉庫上傳和拉取鏡像3.3.1上傳鏡……
      • 在一本書中閱讀所有的Hive Sql(20 000字的最完整解釋)
        0閱讀 0條評論 個贊
        HiveSql大全本文基本涵蓋了Hive日常使用的所有SQL,因為SQL太多,所以將SQL進行了如下分類:一、DDL語句(數據定義語句):對數據庫的操作:包含創建、修改數據庫對數據表的操作:分……
      • 面試問題:Java序列化和反序列化
        0閱讀 0條評論 個贊
        目錄序列化和反序列化的概念應用場景?序列化實現的方式繼承Serializable接口,普通序列化繼承Externalizable接口,強制自定義序列化serialVersionUID的作用靜態變量不會……
      • 全志A40i核心板全國產化 照亮動力設備國產化之路
        1閱讀 0條評論 個贊
        國產化三個字近幾年來在電力行業內很火,新的設備、新的項目都開始有國產化的趨勢,要求自主可控,然而很多人只是泛泛地去看待“國產化”這三個字而沒有去深究它的重要性。自主可控有多重要?今天,我們就來認真地聊……
      • 高手面試一個人 問4個問題就夠了
        0閱讀 0條評論 個贊
        作者|Mr.K編輯|Emma來源|技術領導力(ID:jishulingdaoli)金九銀十求職季又要來了。據統計,今年的應屆畢業生已破千萬,加上社會面存量人才,相信今年的人才季的熱度,不會低于今年……
      • k8s網絡持久存儲的StorageClass(如何一步步實現動態持久存儲)
        0閱讀 0條評論 個贊
        StorageClass的作用:創建pv時,先要創建各種固定大小的PV,而這些PV都是手動創建的,當業務量上來時,需要創建很多的PV,過程非常麻煩。而且開發人員在申請PVC資源時,還不一定有匹配條件的……
      • 三萬字肝爆《數據倉庫體系》
        0閱讀 0條評論 個贊
        文章很長,前言一定要看擁有本篇文章,意味著你擁有一本完善的書籍,本篇文章整理了數據倉庫領域,幾乎所有的知識點,文章內容主要來源于以下幾個方面:源于「數據倉庫交流群」資深數據倉庫工程師的交流討論,如《s……
      • RDD星火基金簡介(01)
        0閱讀 0條評論 個贊
        1,基本概念RDD(ResilientDistributedDataset):彈性分布式數據集它是Spark中最基本的數據抽象,是編寫Spark程序的基礎。簡單的來講,一個Spark程序可以概括……
      • 平均負載和CPU利用率有什么區別?
        2閱讀 0條評論 個贊
        大家好,我是樹哥。在性能優化中,我們經常會關注CPU平均負載這個指標。但如果讓你來跟我解釋一下什么是平均負載,你能說得清楚嗎?它跟CPU使用率有什么區別?我想可能很多人都數不清楚,今天我們就來……
      • Java線程面試題前50名
        0閱讀 0條評論 個贊
        .css-1yuhvjn{margin-top:16px;}.css-3jt6os.FileLinkCard{-webkit-align-items:center;-webkit-box-align……
      • 自動化測試選擇Python還是Java?
        0閱讀 0條評論 個贊
        你好,我是測試蔡坨坨。今天,我們來聊一聊測試人員想要進階,想要做自動化測試,甚至測試開發,如何選擇編程語言。前言自動化測試,這幾年行業內的熱詞,也是測試人員進階的必備技能,更是軟件測試未來發展的趨勢?!?/div>
      • 深入理解Redis數據結構-字典
        0閱讀 0條評論 個贊
        字典,又稱為符號表、關聯數組或映射,是一種用于保存鍵值對的抽象數據結構。在字典中,一個鍵可以和一個值進行關聯,這些關聯的鍵和值稱為鍵值對。鍵值對中鍵是唯一的,我們可以根據鍵key通過映射查找或者更新對……
      • 用Python實現廣度優先搜索
        3閱讀 0條評論 個贊
        圖是一種善于處理關系型數據的數據結構,使用它可以很輕松地表示數據之間是如何關聯的圖的實現形式有很多,最簡單的方法之一就是用散列表背景圖有兩種經典的遍歷方式:廣度優先搜索和深度優先搜索。兩者是相似的。實……
      最近發布資訊
      更多
      警花高潮嗷嗷叫
      <del id="nnjnj"></del><track id="nnjnj"></track>

      <p id="nnjnj"></p>

      <address id="nnjnj"></address>

        <pre id="nnjnj"><pre id="nnjnj"></pre></pre>

          <noframes id="nnjnj"><ruby id="nnjnj"><ruby id="nnjnj"></ruby></ruby>