MyBatis 3 XML配置-對(duì)象工廠(chǎng)

2022-04-07 15:06 更新

對(duì)象工廠(chǎng)(objectFactory)

每次 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方法。


以上內(nèi)容是否對(duì)您有幫助:
在線(xiàn)筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)