一、ObjectFactory基本介紹
ObjectFactory是MyBatis的一個重要組件,它負責產生映射文件中配置的對象實例。ObjectFactory的核心功能是實例化查詢返回的結果對象或Mapper介面的代理對象。
ObjectFactory組件是MyBatis的基礎架構之一,建立在執行器、類型處理器和參數處理器等其他架構之上,因此對MyBatis體系的了解和掌握,Objectfactory也是必須掌握的一環。
二、ObjectFactory的實現方式
MyBatis默認提供了兩種ObjectFactory的實現方式,它們分別是DefaultObjectFactory和SerializableObjectFactory。其中,DefaultObjectFactory是默認使用的實現方式。
除此之外,開發者也可以通過實現ObjectFactory介面,按需自定義實現方式。
三、DefaultObjectFactory實現方式
DefaultObjectFactory是MyBatis提供的默認實現方式,實例化對象時採用簡單的反射機制。使用此實現方式時,要求查詢返回的結果對象必須要提供無參構造器。如果想通過有參構造器來產生結果對象,則需要自定義ObjectFactory。
示例代碼:
public class DefaultObjectFactory implements ObjectFactory {
/**
* 通過反射機制實例化對象
*/
public T create(Class type) {
return create(type, null, null);
}
/**
* 通過反射機制實例化對象,並根據屬性映射填充對象
*/
public T create(Class type, List<Class> constructorArgTypes, List四、自定義ObjectFactory實現方式
如果要自定義ObjectFactory實現方式,需要實現ObjectFactory介面,並重寫其中的create()方法。可以在create()方法中實現自己的實例化方式。
示例代碼:
public class MyObjectFactory implements ObjectFactory {
/**
* 實現ObjectFactory介面
* 這裡採用了自定義的方式創建實例對象
* */
public Object create(Class type) {
return new User();
}
public void setProperties(Properties properties) {
}
}
五、ObjectFactory在MyBatis中的使用方式
MyBatis中可以通過在Mapper.xml文件中的resultType屬性中指定返回結果類型使用ObjectFactory。另外,在配置文件mybatis-config.xml中也可以通過配置來指定ObjectFactory實現方式。
示例代碼:
<configuration>
<objectFactory type="com.example.MyObjectFactory"></objectFactory>
</configuration>
六、總結
ObjectFactory是MyBatis中非常重要的一個組件,負責產生映射文件中配置的對象實例。DefaultObjectFactory是MyBatis默認提供的實現方式,如果特殊情況下需要自定義實現方式,可以實現ObjectFactory介面並重寫其中的create()方法。
在MyBatis的使用中,除了在Mapper.xml文件中的resultType屬性指定返回結果類型外,也可以在mybatis-config.xml中通過配置來指定ObjectFactory實現方式。
原創文章,作者:FTYWI,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/372614.html
微信掃一掃
支付寶掃一掃