一起學習Mybatis----配置 型別處理器物件工廠
阿新 • • 發佈:2018-12-27
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 方法。