1. 程式人生 > >一起學習Mybatis----配置 型別處理器物件工廠

一起學習Mybatis----配置 型別處理器物件工廠

        MyBatis 每次建立結果物件的新例項時,它都會使用一個物件工廠(ObjectFactory)例項來完成。 預設的物件工廠需要做的僅僅是例項化目標類,要麼通過預設構造方法,要麼在引數對映存在的時候通過引數構造方法來例項化。 如果想覆蓋物件工廠的預設行為,則可以通過建立自己的物件工廠來實現。

<!-- mybatis-config.xml -->
<objectFactory type="org.mybatis.example.MyobjectFactory">
  <property name="someProperty" value="100"/>
</objectFactory>

 

public class MyobjectFactory extends DefaultObjectFactory implements Serializable {
    private static final long serialVersionUID =-3814827216040286292L;

    Logger log= LoggerFactory.getLogger (MyobjectFactory. class);

    @Override
    public Object create(Class type) {
        log.info("使用定製物件工廠的create方法構建單個物件");
        return super.create(type);
    }

    @Override
    public <T> T create(Class<T> type, List<Class<?>> constructorArgTypes, List<Object> constructorArgs) {
        log.info("使用定製物件工廠的 create方法構建列表物件");
        return super.create(type, constructorArgTypes, constructorArgs);
    }

    @Override
    public void setProperties(Properties properties) {
        super.setProperties(properties);
    }
    @Override
    public <T> boolean isCollection(Class<T> type) {
        return Collection.class.isAssignableFrom(type);
    }
}

    ObjectFactory 介面很簡單,它包含兩個建立用的方法,一個是處理預設構造方法的,另外一個是處理帶引數的構造方法的。 最後,setProperties 方法可以被用來配置 ObjectFactory,在初始化你的 ObjectFactory 例項後, objectFactory 元素體中定義的屬性會被傳遞給 setProperties 方法。