MyBatis ObjectFactory 對象工廠

MyBatis每次創(chuàng)建結果對象的新實例時,它都會使用一個對象工廠(ObjectFactory) 實例來完成。默認的對象工廠需要做的僅僅是實例化目標類,要么通過默認構造方法,要么在參數映射存在的時候通過參數構造方法來實例化。如果想覆蓋對象工廠的默認行為,則可以通過創(chuàng)建自己的對象工廠來實現。

// 自定義對象工廠
public class ExampleObjectFactory extends DefaultObjectFactory 
{
    public Object create(Class type) 
    {
        return super.create (type) ;
    }
    public object create (Class type,List<Class> constructorArgTypes,List<Object> constructorArgs) 
    {
        return super.create (type,constructorargTypes,constructorArgs) ;
    }
    public void setProperties (Properties properties) 
    {
        super.setProperties(properties) ;
    }
    public <T> boolean isCollection (Class<T> type)
    {
        return Collection.class.isAssignableFrom(type);
    }

在MyBatis配置文件中配置自定義對象工廠,如下所示:

<objectFactory type="cn.mybatis.factory.ExampleObjectFactory
<Property names="someProperty" value="100" />
</objectFactory>

ObjectFactory接口很簡單,它包含兩個創(chuàng)建對象的方法:一個是默認構造方法的;另外一個是處理帶參數的構造方法的。setProperties方法可以被用來配置ObjctFactory,在初始化 ObjectFactory 實例后,ObjectFactory 元素體中定義的屬性會被傳遞給 setProperties 方法。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容