W3Cschool
恭喜您成為首批注冊(cè)用戶(hù)
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
每次 MyBatis 創(chuàng)建結(jié)果對(duì)象的新實(shí)例時(shí),它都會(huì)使用一個(gè)對(duì)象工廠(chǎng)(?ObjectFactory
?)實(shí)例來(lái)完成實(shí)例化工作。 默認(rèn)的對(duì)象工廠(chǎng)需要做的僅僅是實(shí)例化目標(biāo)類(lèi),要么通過(guò)默認(rèn)無(wú)參構(gòu)造方法,要么通過(guò)存在的參數(shù)映射來(lái)調(diào)用帶有參數(shù)的構(gòu)造方法。 如果想覆蓋對(duì)象工廠(chǎng)的默認(rèn)行為,可以通過(guò)創(chuàng)建自己的對(duì)象工廠(chǎng)來(lái)實(shí)現(xiàn)。比如:
// ExampleObjectFactory.java
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-config.xml -->
<objectFactory type="org.mybatis.example.ExampleObjectFactory">
<property name="someProperty" value="100"/>
</objectFactory>
?ObjectFactory
接口很簡(jiǎn)單,它包含兩個(gè)創(chuàng)建實(shí)例用的方法,一個(gè)是處理默認(rèn)無(wú)參構(gòu)造方法的,另外一個(gè)是處理帶參數(shù)的構(gòu)造方法的。 另外,?setProperties
方法可以被用來(lái)配置 ?ObjectFactory
?,在初始化你的 ?ObjectFactory
實(shí)例后, ?objectFactory
元素體中定義的屬性會(huì)被傳遞給 ?setProperties
方法。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話(huà):173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: