Mybatis-SqlMapConfig.xml配置
SqlMapConfig.xml主要負責配置資料庫的連線資訊,以及載入mapper.xml。
Properties
在配置資料庫連線資訊時,可採用Properties配置檔案的方式進行相關資訊的配置並載入,
這樣只需要在SqlMapConfig.xml中載入properties檔案包含的屬性值,在SqlMapConfig.xml中就不需要對資料庫連線引數硬編碼。
同時也方便對引數進行統一管理,其它xml亦可引用該properties配置檔案。
相關程式碼如下:
db.properties檔案:
SqlMapConfig.xml配置檔案:jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/mybatis jdbc.username=root jdbc.password=passwd
<environments default="development"> <environment id="development"> <!-- 使用jdbc事務管理--> <transactionManager type="JDBC" /> <!-- 資料庫連線池--> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driver}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> </dataSource> </environment> </environments>
注意: MyBatis 將按照下面的順序來載入屬性:
1、properties元素體內定義的屬性首先被讀取。
2、其次讀取properties 元素中resource或url載入的屬性,其會覆蓋已讀取的同名屬性3、最後讀取parameterType傳遞的屬性,其亦會覆蓋已經讀取的同名屬性
建議:
不要在properties元素體內新增任何屬性值,只將屬性值定義在properties檔案中。
在properties檔案中定義屬性名要有一定的特殊性。
settings配置
mybatis框架在執行時可以調整一些執行引數。
比如:開啟二級快取、開啟延遲載入,全域性引數將會影響mybatis的執行行為。
表格下載:下載
TypeAliase(類型別名)
在Mybatis中,我們可以為資料型別指定一些別名,繼而簡化我們的開發,同時,也可以為協同開發做出一定的規則,減少了程式碼的錯誤量以及整合速度。
Mybatis本身支援了一些別名供我們使用,如下所示:
自帶別名
別名 |
對映的型別 |
_byte |
byte |
_long |
long |
_short |
short |
_int |
int |
_integer |
int |
_double |
double |
_float |
float |
_boolean |
boolean |
string |
String |
byte |
Byte |
long |
Long |
short |
Short |
int |
Integer |
integer |
Integer |
double |
Double |
float |
Float |
boolean |
Boolean |
date |
Date |
decimal |
BigDecimal |
bigdecimal |
BigDecimal |
自定義別名
除了Mybatis自身支援的一些資料類型別名外,我們還可以自定義一些簡單易用的別名供我們使用。
自定義別名,則需要在SqlMapConfig.xml配置檔案中進行相關的配置,如下所示:
<!-- 自定義別名 -->
<typeAliases>
<!-- 針對單個別名的定義
type:型別的路徑
alias:別名
-->
<-- 單個別名定義 -->
<typeAlias type="com.sw.po.User" alias="user"/>
<!-- 批量別名定義指定包名,mybatis自動掃描包中的po類,自動定義別名,別名即為類名(大小寫均可) -->
<package name="com.sw.po"/>
</typeAliases>
其中,我們可以進行單個別名定義,如下:
<typeAlias type="com.sw.po.User" alias="user"/>
表示將com.sw.User定義為user,在使用時,我們只需要填寫user即可。
同時,亦可進行批量別名定義,如下:
<package name="com.sw.po"/>
如上則表示將com.sw.po包下所有的po類名稱定義為其類名。
例如:com.sw.po下有User類,則其別名即為User或者user.....
注:在這裡,user並不區分大小寫,大小寫均可進行配置。
typeHandler(型別處理器)
型別處理器用於java型別與jdbc型別的對映,如下所示:
<select id="findUserById" parameterType="int" resultType="user">
select * from user where id = #{id}
</select>
parameterType則表示輸入型別,即與資料庫表字段的相關對映。
在Mybatis中,Mybatis自帶了一些型別處理器,已經基本可以滿足我們的開發需求,故一般不用自定義。
Mybatis自帶型別處理器如下所示:
型別處理器 |
Java型別 |
JDBC型別 |
BooleanTypeHandler |
Boolean,boolean |
任何相容的布林值 |
ByteTypeHandler |
Byte,byte |
任何相容的數字或位元組型別 |
ShortTypeHandler |
Short,short |
任何相容的數字或短整型 |
IntegerTypeHandler |
Integer,int |
任何相容的數字和整型 |
LongTypeHandler |
Long,long |
任何相容的數字或長整型 |
FloatTypeHandler |
Float,float |
任何相容的數字或單精度浮點型 |
DoubleTypeHandler |
Double,double |
任何相容的數字或雙精度浮點型 |
BigDecimalTypeHandler |
BigDecimal |
任何相容的數字或十進位制小數型別 |
StringTypeHandler |
String |
CHAR和VARCHAR型別 |
ClobTypeHandler |
String |
CLOB和LONGVARCHAR型別 |
NStringTypeHandler |
String |
NVARCHAR和NCHAR型別 |
NClobTypeHandler |
String |
NCLOB型別 |
ByteArrayTypeHandler |
byte[] |
任何相容的位元組流型別 |
BlobTypeHandler |
byte[] |
BLOB和LONGVARBINARY型別 |
DateTypeHandler |
Date(java.util) |
TIMESTAMP型別 |
DateOnlyTypeHandler |
Date(java.util) |
DATE型別 |
TimeOnlyTypeHandler |
Date(java.util) |
TIME型別 |
SqlTimestampTypeHandler |
Timestamp(java.sql) |
TIMESTAMP型別 |
SqlDateTypeHandler |
Date(java.sql) |
DATE型別 |
SqlTimeTypeHandler |
Time(java.sql) |
TIME型別 |
ObjectTypeHandler |
任意 |
其他或未指定型別 |
EnumTypeHandler |
Enumeration型別 |
VARCHAR-任何相容的字串型別,作為程式碼儲存(而不是索引)。 |
Mappers(對映器)
mappers對映器主要用於載入相關的mapper.xml配置檔案。
<!-- 載入對映檔案 -->
<mappers>
<!-- User.xml -->
<mapper resource="sqlmap/User.xml"/>
<!-- 1、UserMapper.xml -->
<!-- <mapper resource="com.sw.mapper.UserMapper.xml"/> -->
<!--2、通過Mapper介面載入對映檔案
規範:需要將mapper介面類名與mapper.xml對映檔名保持一致,且在一個目錄中
前提:使用的是mapper代理的方式
-->
<!-- <mapper class="com.sw.mapper.UserMapper"/> -->
<!-- 3、批量載入(多個mapper)
指定mapper介面的包名,mybatis自動掃描包下的mapper介面進行載入
-->
<package name="com.sw.mapper"/>
</mappers>
如上所示,一般的我們可以使用以上三種方法進行載入mapper.xml配置檔案的工作。
但是我們知道,在實際開發時,有的時候,我們會將Mapper.xml配置檔案放置於伺服器某個磁碟中,
故而,我們可以使用<mapper url=" "/>的方式進行載入,其url表示mapper.xml的路徑,例如:
<mapper url="file:///D:\workspace\mybatis-1\config\sqlmap\User.xml"/>
到這裡,關於SqlMapConfig.xml的基本常用配置就講解完了,在之後有增加的地方會接著修改,有錯誤的地方,請指教。