mybatis學習筆記(5)-SqlMapConfig

mybatis學習筆記(5)-SqlMapConfig

標籤: mybatishtml


[TOC]java


本文主要講解SqlMapConfig配置文件mysql

參考mybatis – MyBatis 3 | Configurationgit

SqlMapConfig.xml中配置的內容和順序以下github

  • properties(屬性)
  • settings(全局配置參數)
  • typeAliases(類型別名)
  • typeHandlers(類型處理器)
  • objectFactory(對象工廠)
  • plugins(插件)
  • environments(環境集合屬性對象)
    • environment(環境子屬性對象)
      • transactionManager(事務管理)
      • dataSource(數據源)
  • mappers(映射器)

(注:粗體是重點,斜體不經常使用)spring

properties(屬性)

將數據庫鏈接參數單獨配置在db.properties中,只須要在SqlMapConfig.xml中加載db.properties的屬性值。在SqlMapConfig.xml中就不須要對數據庫鏈接參數硬編碼。sql

將數據庫鏈接參數只配置在db.properties中。緣由:方便對參數進行統一管理,其它xml能夠引用該db.properties。數據庫

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://120.25.162.238:3306/mybatis001?characterEncoding=utf-8
jdbc.username=root
jdbc.password=123

在sqlMapConfig.xml加載屬性文件:緩存

<properties resource="db.properties">
        <!--properties中還能夠配置一些屬性名和屬性值  -->
        <!-- <property name="jdbc.driver" value=""/> -->
</properties>

<!-- 和spring整合後 environments配置將廢除-->
<environments default="development">
    <environment id="development">
        <!-- 使用jdbc事務管理,事務控制由mybatis-->
        <transactionManager type="JDBC" />
        <!-- 數據庫鏈接池,由mybatis管理-->
        <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 將按照下面的順序(優先級)來加載屬性:mybatis

  • properties元素體內定義的屬性首先被讀取。
  • 而後會讀取properties元素中resource或url加載的屬性,它會覆蓋已讀取的同名屬性。
  • 最後讀取parameterType傳遞的屬性,它會覆蓋已讀取的同名屬性。

建議:

  • 不要在properties元素體內添加任何屬性值,只將屬性值定義在properties文件中。
  • 在properties文件中定義屬性名要有必定的特殊性,如:XXXXX.XXXXX.XXXX

settings(全局參數配置)

mybatis框架在運行時能夠調整一些運行參數,好比:開啓二級緩存、開啓延遲加載...

全局參數將會影響mybatis的運行行爲。具體參考官網:

mybatis-settings

typeAliases(類型別名)

在mapper.xml中,定義不少的statement,statement須要parameterType指定輸入參數的類型、須要resultType指定輸出結果的映射類型。

若是在指定類型時輸入類型全路徑,不方便進行開發,能夠針對parameterTyperesultType指定的類型定義一些別名,在mapper.xml中經過別名定義,方便開發。

  • mybatis默認支持別名

參考 typeAliases

別名 映射的類型
_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
  • 自定義別名
    • 單個別名定義
    • 批量定義別名(經常使用)
<!-- 別名定義 -->
<typeAliases>

    <!-- 針對單個別名定義
    type:類型的路徑
    alias:別名
     -->
    <!-- <typeAlias type="cn.itcast.mybatis.po.User" alias="user"/> -->
    <!-- 批量別名定義
    指定包名,mybatis自動掃描包中的po類,自動定義別名,別名就是類名(首字母大寫或小寫均可以)
    -->
    <package name="com.iot.mybatis.po"/>

</typeAliases>

typeHandlers(類型處理器)

mybatis中經過typeHandlers完成jdbc類型和java類型的轉換。例如:

<select id="findUserById" parameterType="int" resultType="user">
		select * from user where id = #{id}
</select>

mybatis自帶的類型處理器基本上知足平常需求,不須要單獨定義。

mybatis支持類型處理器

參考 typeHandlers

類型處理器 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(映射配置)

  • 經過resource加載單個映射文件
<!--經過resource方法一次加載一個映射文件 -->
<mapper resource="mapper/UserMapper.xml"/>
  • 經過mapper接口加載單個mapper
<!-- 經過mapper接口加載單個 映射文件
        遵循一些規範:須要將mapper接口類名和mapper.xml映射文件名稱保持一致,且在一個目錄中
        上邊規範的前提是:使用的是mapper代理方法
         -->
<mapper class="com.iot.mybatis.mapper.UserMapper"/>

目錄示例

com.iot.mybatis.mapper------------------package包
           |----UserMapper.java
           |----UserMapper.xml
  • 批量加載mapper(推薦使用)
<!-- 批量加載mapper
		指定mapper接口的包名,mybatis自動掃描包下邊全部mapper接口進行加載
		遵循一些規範:須要將mapper接口類名和mapper.xml映射文件名稱保持一致,且在一個目錄 中
		上邊規範的前提是:使用的是mapper代理方法
		 -->
<package name="com.iot.mybatis.mapper"/>

做者@brianway更多文章:我的網站 | CSDN | oschina

相關文章
相關標籤/搜索