mybatis 是一款優秀的持久層框架,它支援定製化 sql、儲存過程以及高階對映。本文主要介紹的是mybatis連線查詢遇到的乙個坑以及解決方法,下面話不多說了,來一起看看詳細的介紹吧
通過角色id獲取role_menu表中對應的選單id,再通過選單id獲取選單項的許可權編碼 , 使用mybatis連線查詢,**如下
// sysrolemapper
// 通過選單id連線查詢對應的許可權編碼
@select("select menu_id from sys_role_menu where role_id = #")
@results()
list getperm roleid);
//連線查詢物件sysmenumapper
@select("select permission_code from sys_menu where id = #")
string getpermissioncodebymenuid(@param("menuid") integer menuid);
預想查詢出list,但返回的卻是**list ,而且列印出的sql語句裡,也沒有執行getpermissioncodebymenuid()**這個方法對應的sql語句。
在使用@results進行連線查詢的時候,應該使用實體類或map物件來接受返回值。
由於自己水平有限,在除錯原始碼的過程中,沒有找到mybatis具體是如何處理連線查詢的,
個人猜想是mybatis有乙個地方可以www.cppcns.com判斷返回的型別與sql語句的關係,如果不匹配直接不執行這條sql語句,畫了太多時間,先mark下,後續再繼續研究。
**改為如下,問題解決;
@select("select menu_id from sys_role_menu where role_id = #")
@results()
list> getpermissionbyuserrole(integer rol程式設計客棧eid);
列印的sql語句:
在過程中,通過除錯原始碼,看網上的一些資料,了解了一些mybatis框架和基本原理,這裡做乙個小的總結:
mybatis 是在jdbc的基礎上封裝的,提供了方便強大的api,供使用者對資料庫操作;
mybatis的主要成員
我們在xml或mapper檔案中定義的sql語句等,會在初始化的時候載入到記憶體中,以map物件的形式儲存,後續需要使用的時候,根據key來獲取
key = "com.project.mapper.sysrolemapper.getrole"
value =
.....
參考:
記錄一次Mybatis使用中遇到的BUG
今天在開發過程中,由於業務需求,需要前台同時輸入多個值進行模糊查詢,所以我預想將輸入的值,以陣列形式傳入,並在 mybatis 的 xml 檔案中,用foreach標籤進行遍歷。在遍歷過程 現了問題,後台報了乙個 mybatis 的錯誤。錯誤如下所示 nested exception is org....
記一次paramiko遠端連線遇到的坑
背景 工作中遇到了乙個問題,需要用到windows向windows連線 檔案傳發 以及,linux向windows連線 檔案傳發 的需求。問題1 在網上搜尋方法的時候,發現別人可以直接用paramiko連線windows,並用psutil 獲取cpu 記憶體等資料,和我們連線linux基本一樣的,那...
第一次遇到
明天還沒有到來 你永遠不能給它定論 生活是生活嗎?靈魂已經停滯。失去了目標,大概就是乙個擁有生物特性的行屍走肉。一天,兩天,也許是三天!日期已經不重要啦。白天,也可能是黑夜,已經不知道啦。我是什麼時候進食呢,總之,我這副軀殼依舊有很強烈的生命特徵。我在無聊,我在放空,也許是在等在死亡。噓!朋友們!不...