Mybatis系列番外篇之多引數

2021-07-06 09:37:20 字數 1140 閱讀 8848

使用過mybatis的小夥伴們都知道,在對映檔案中只能使用parametertype屬性指定乙個傳入引數,可是在實際的專案中,往往需要用到多個傳入引數,那麼應該如何實現呢?本文就以mybatis介面式程式設計方式來分享一下我的實現方式。

在實際的工作專案中,需要使用使用者和角色的概念對系統許可權進行管理,那麼就引出了為使用者分配角色的問題。

通常我們會在service層定義乙個方法用來為使用者新增角色。這個方法需要傳入兩個引數,乙個是使用者id,另乙個是角色id列表,方法簽名如下。

public void grantroles(int userid, listroleids) throws notfoundexception;

但是在dao層卻不可以使用這樣的方法簽名,因為mybatis的對映檔案中,只能使用parametertype指定乙個傳入引數,所以,方法簽名就變成這個樣子了。

public void grantroles(mapparameter);
這裡使用了map型別對service層傳入的兩個引數進行了包裝,將其轉為乙個引數。

當然,在編寫對映檔案時,也可以不使用parametertype屬性來指定傳入引數型別,這樣就可以使用類似#,#...方式來順序獲取傳入的引數。

只是這種方式不適用於此場景中,因為在為使用者分配角色時,角色的數量是不確定的,這樣就沒法確定傳入引數的數量。所以使用map型別對傳入引數進行封裝。

insert ignore sec_user_role(user_id, role_id) values

(#, #)

在配置檔案中出現的useridroleids是則是map引數中的兩個key,#則是取出對應的value,由於roleids對應的值是乙個list型別,所以,這裡使用了

foreach標籤遍歷列表中的所有值。

@override

public void grantroles(int userid, listroleids) throws notfoundexception else

}

Mybatis系列番外篇之多引數

使用過mybatis的小夥伴們都知道,在對映檔案中只能使用parametertype屬性指定乙個傳入引數,可是在實際的專案中,往往需要用到多個傳入引數,那麼應該如何實現呢?本文就以mybatis介面式程式設計方式來分享一下我的實現方式。在實際的工作專案中,需要使用使用者和角色的概念對系統許可權進行管...

番外篇 日誌

一套能實現日誌輸出的工具包 日誌 能夠輸出系統執行的狀態,以及執行的時間 能力定製輸出目標 定製輸出格式 攜帶上下文 執行時選擇性輸出 靈活設定 效率高常見的日誌框架 來自這個包org.slf4.private logger logger logge ctory.getlogger user.cla...

AWS學習番外篇之SDK For Java

每個aws服務都有乙個服務介面,提供了與服務api 中對應的方法。如 amazon dynamodb的服務介面名是amazondynamodb。每個服務介面都有對應的客戶端生成器,用於構建服務介面。1.獲取客戶端生成器的例項,使用靜態工廠方法standard。amazondynamodbclient...