Mybatis應用學習(2)——配置文件編寫

1. Mybatis的配置文件SqlMapConfig.xml

1.1 主要標籤

  • properties(定義屬性):用來定義一些固定屬性值,以key-value形式存在

    •  MyBatis 將按照下面的順序來加載屬性:在 properties 元素體內定義的屬性首先被讀取;而後會讀取properties 元素中resource或 url 加載的屬性,它會覆蓋已讀取的同名屬性;最後讀取parameterType傳遞的屬性,它會覆蓋已讀取的同名屬性。建議不要在properties元素體內添加任何屬性值,只將屬性值定義在properties文件中,並且在properties文件中定義屬性名要有必定的特殊性,如:XXXXX.XXXXX.XXXXjava

    • 其應用以下:將數據庫鏈接參數單獨配置在db.properties中,只須要在SqlMapConfig.xml中加載db.properties的屬性值。sql

      在SqlMapConfig.xml中就不須要對數據庫鏈接參數硬編碼。將數據庫鏈接參數只配置在db.properties中,緣由是方便對參數進行統一管理,其它xml能夠引用該db.properties。數據庫

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

    •  

      子標籤<property name="" value=""/>:定義添加屬性值mybatis

       

       

  • settings(全局配置參數):mybatis框架在運行時經過該標籤能夠調整一些運行參數,好比開啓二級緩存,全局參數將會影響mybatis的運行行爲。

    • 參數配置子標籤爲<setting name="" value=""/>,name的值和value的值以下:app

示例使用框架

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
	<property name="" value=""/>
	<settings>
<!--開啓延遲加載-->
		<setting name="lazyLoadingEnabled" value="true"/>
		<setting name="aggressiveLazyLoading" value="false"/>
	</settings>
</configuration>

 

  • typeAliases(類型別名):用來給指定的類取別名,在mapper.xml中,定義不少的statement,statement須要parameterType指定輸入參數的類型、須要resultType指定輸出結果的映射類型。若是在指定類型時輸入類型全路徑,不方便進行開發,能夠針對parameterType或resultType指定的類型定義一些別名,在mapper.xml中經過別名定義,方便開發。

    • 默認支持的類型與別名:不須要專門配置,直接應用便可

      別名編碼

      映射的類型url

      _byte spa

      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

    • 針對自定義的pojo類型須要配置別名:所使用的標籤主要以下
      <typeAliases>
      		<!-- 針對單個類的別名配置:type寫類的全限定路徑,alias寫別名-->
      		<typeAlias type="" alias=""/>
      		<!-- 批量別名配置:name寫包的全限定路徑,mybatis會自動生成別名,別名爲包下每一個類的類名-->
      		<package name=""/>
      	</typeAliases>

       

  • typeHandlers(類型處理器):Mybatis經過類型處理器來完成在數據庫數據類型和java類型之間的轉換,好比從數據庫中的varchar轉爲java中的String類型,一般狀況下Mybatis中默認支持的類型處理器能夠知足開發需求,因此通常不須要自定義類型處理器

    • 類型處理器

      Java類型

      JDBC類型

      BooleanTypeHandler

      Booleanboolean

      任何兼容的布爾值

      ByteTypeHandler

      Bytebyte

      任何兼容的數字或字節類型

      ShortTypeHandler

      Shortshort

      任何兼容的數字或短整型

      IntegerTypeHandler

      Integerint

      任何兼容的數字和整型

      LongTypeHandler

      Longlong

      任何兼容的數字或長整型

      FloatTypeHandler

      Floatfloat

      任何兼容的數字或單精度浮點型

      DoubleTypeHandler

      Doubledouble

      任何兼容的數字或雙精度浮點型

      BigDecimalTypeHandler

      BigDecimal

      任何兼容的數字或十進制小數類型

      StringTypeHandler

      String

      CHARVARCHAR類型

      ClobTypeHandler

      String

      CLOBLONGVARCHAR類型

      NStringTypeHandler

      String

      NVARCHARNCHAR類型

      NClobTypeHandler

      String

      NCLOB類型

      ByteArrayTypeHandler

      byte[]

      任何兼容的字節流類型

      BlobTypeHandler

      byte[]

      BLOBLONGVARBINARY類型

      DateTypeHandler

      Datejava.util

      TIMESTAMP類型

      DateOnlyTypeHandler

      Datejava.util

      DATE類型

      TimeOnlyTypeHandler

      Datejava.util

      TIME類型

      SqlTimestampTypeHandler

      Timestampjava.sql

      TIMESTAMP類型

      SqlDateTypeHandler

      Datejava.sql

      DATE類型

      SqlTimeTypeHandler

      Timejava.sql

      TIME類型

      ObjectTypeHandler

      任意

      其餘或未指定類型

      EnumTypeHandler

      Enumeration類型

      VARCHAR-任何兼容的字符串類型,做爲代碼存儲(而不是索引)。

  • objectFactory(對象工廠)

  • plugins(插件):添加一些插件,好比分頁插件

  • environments(環境集合屬性對象)

    • environment(環境子屬性對象)
    • transactionManager(事務管理)
    • dataSource(數據源)
  • mappers(映射器):該標籤用於加載映射文件,子標籤只有<mapper/>

    • 經過子標籤<mapper/>中的resource屬性指定加載單個映射文件:注意,路徑填寫是在類路徑(也就是classpath),寫相對路徑
      <mappers>
      		<mapper resource="mapper/UserMapper.xml"/>
      	</mappers>

       

    • 經過子標籤<mapper/>中的class屬性指定加載單個映射文件:注意,該方法只針對Mybatis經過Mapper接口代理開發有效,因此要知足Mapper代理開發的規範,路徑填寫Mapper接口的全限定路徑,而且要將UserMapper接口對應的UserMapper.xml映射文件放在同一個包下,並且xml文件名和mapper接口名相同
      <mappers>
      		<mapper class="dao.UserMapper"/>
      	</mappers>

       

    • 經過子標籤<package/>中的name屬性指定加載批量映射文件:注意,該方法只針對Mybatis經過Mapper接口代理開發有效,因此要知足Mapper代理開發的規範,而且要將Mapper接口對應的Mapper.xml映射文件放在同一個包下,並且xml文件名和mapper接口名相同,路徑填寫所在的包的全限定路徑
      <mappers>
      <!--替換
          <mapper resource="mapper.Usermapper"/>
      	<mapper resource="mapper.NoteBookMapper"/>
      -->
      		<package name="mapper"/>
      	</mappers>
相關文章
相關標籤/搜索