1. 程式人生 > >MyBatis 使用枚舉或其他對象

MyBatis 使用枚舉或其他對象

入門到精通 處理器 -- 字符串 我沒 conf 標記 枚舉類型 clas

From《Mybatis從入門到精通》

1.筆記:

    <!--
        6.3 使用枚舉或者其他對象

        6.3.1 使用MyBatis提供的枚舉處理器

            不懂:
                因為枚舉除了本身的字面值外,還可以通過枚舉的ordinal()方法獲取枚舉值的
                索引。在這個枚舉類中,disabled對應索引為0,enabled對應的索引為1.

            MyBatis在處理Java類型和數據庫類型時,使用TypeHandler(類型處理器),對這
            兩者進行轉換。MyBatis為Java和數據庫JDBC中的基本類型和常用的類型提供了
            TypeHandler接口實現。MyBatis在啟動時會加載所有的JDBC對應的類型處理器,這個
            處理器會將枚舉類型轉換為字符串類型的字面值並使用。對於Enabled而言,便是disabled和
            enabled字符串。

            也就是說默認的org.apache.ibatis.type.EnumTypeHandler,這個處理器只對枚舉
            的字面值進行處理,也就是數據庫中需要存放著字符串,這樣才能夠轉化成相應的枚舉類型
            所以不適合當前的情況。MyBatis還提供了org.apache.ibatis.type.EnumOrdinalTypeHandler
            處理器,這個處理器使用枚舉的索引值進行出來,可以解決此處遇到的問題。要使用
            這個處理器,需要在mybatis-config.xml中進行配置:
                <typeHandlers>
                    <typeHanderl
                        javaType="tk.mybatis.simple.type.Enabled"
                        hadler="org.apache.ibatis.type.EnumOrdinalTypeHandler"/>
                </typeHandlers>
    
-->

2.增加的枚舉類型:

package tk.mybatis.simple.type;

public enum Enabled {
    disabled,//禁用
    enabled; //啟用
}

3.對MyBatis配置文件的配置

<typeHandlers>
  <typeHanderl
    javaType="tk.mybatis.simple.type.Enabled"
    hadler="org.apache.ibatis.type.EnumOrdinalTypeHandler"/>
</
typeHandlers>

1.筆記:

    <!--
        6.3.2 使用過自定義的類型處理器
            ——Java枚舉類型,我感覺我還是需要看一下,
            裏面有很多東西,一下子理解不了

         ——標記一下,這部分我沒有細細的研究。
    -->

MyBatis 使用枚舉或其他對象