MyBatis常用配置

2021-08-26 05:13:04 字數 1862 閱讀 1877

在上文中,對於資料庫的資訊我們將之儲存在乙個db.properties檔案中,然後在mybatis-conf.xml檔案中通過properties節點將之引入,如下:

實際上,mybatis給我們提供的properties的配置方式不止這一種,我們也可以在properties節點中新增property,然後再引用其中的值,如下:

也可以使用上面這種方式代替,然後在需要的地方還是通過$來引用,這個是一致的。當然實際開發中第一方式更常用。

有的時候我們有另外一種需求,就是如果我們把資料庫的配置檔案寫在db.properties中,這個檔案誰都可以開啟,顯然,資料庫使用者名稱和密碼直接放在這裡並不安全,所以有的時候我們在這裡放的是加密後的使用者名稱和密碼,然後在載入該檔案的時候再對加密後的使用者名稱和密碼進行解密,ok,那我們來看看這個要怎麼實現,舉個例子,我的資料庫使用者名稱是root,密碼也是root,加密後的字元假設使用者名稱變為root-123,密碼變為root-456(我這裡只是舉例,實際開發中按照既定規則加解密即可),這樣,我的db.properties檔案就是這樣的:

driver=com.mysql.jdbc.driver

url=jdbc:mysql://localhost:3306/mybatis

username=root-123

password=root-456

當然這樣的配置是不能夠成功連線資料庫的,所以我們需要在載入db.properties的時候再對這裡的值進行解密,解密的方式很簡單,其他地方不變,只需要在構造sqlsessionfactory的地方稍作修改即可,方式如下:

public static sqlsessionfactory initsqlsessionfactory2()  catch (ioexception e) 

synchronized (class_lock)

}return sqlsessionfactory;

}

通過properties中的getproperty方法先獲取原始的值,然後再進行修改,修改之後重新設定即可,然後在構造sqlsessionfactory的時候再將之作為引數傳入即可。

select * from user where id = #

要寫類的全路徑,這樣很明顯很麻煩。所以我們需要定義別名,這樣用起來方便,我們在mybatis-conf.xml中定義別名,如下:

這樣我們在使用user這個物件的時候直接寫user就行了,而不用從包名就開始寫起。那麼這裡有乙個需要注意的地方就是別名不區分大小寫。 

有的時候我們的bean包下有許多實體類,乙個乙個的取別名顯然太麻煩,有沒有什麼快捷方式呢?當然有!我們可以像下面這樣來直接註冊乙個包下所有的實體類:

這樣,當系統啟動的時候就會掃瞄bean包下所有的實體類,然後給這些實體類取別名,預設的別名即類名,只不過首字母變為小寫。那有小夥伴說了,如果使用這種方式我還想自定義別名又該怎麼做呢?其實很簡單,在相應的實體類上使用@alias註解就可以了,比如我想給user實體類取乙個別名叫做u,我可以這麼寫:

@alias("u")

public class user

在mybatis-conf.xml中我們還引入了對映器,引入方式如如下:

除了這種方式之外,我們還可以這樣來引入:

方式多種多樣,在實際開發中我們根據自己的需求選擇合適的方法即可。

ok,以上就是我們在mybatis中的常用配置。

mybatis常用配置

前面兩篇部落格我們簡單介紹了mybatis的使用,但是在mybatis的配置問題上我們只是使用了最基礎的配置,本文我們就來說說其他一些常用的配置。如果小夥伴對mybatis尚不了解,可以先參考這兩篇部落格初識mybatis 初識mybatis 二 老司機請略過。由於本文算是初識mybatis 初識m...

Mybatis(三)常用配置資訊

springboot mybatis整合過程中,開啟控制台sql語句列印的多種方式 附 mybatis官方文件 1.在mybatis的配置檔案中新增 mybatis的配置檔案 mybatis config.xml如下 mybatis configuration log impl org.apache...

Mybatis 三 Mybatis快取配置

強烈推薦乙個大神的人工智慧的教程 使用快取可以提高獲取資料的速度,避免頻繁的資料庫互動,尤其是在查詢越多,快取命中率越高的情況下,使用快取的作用就更加明顯了。一般提到mybatis快取的時候都是指二級快取,一級快取缺省會啟用。catch ioexception ignore public sqlse...