I have class TypeHandler that works normal. But now i need to convey parametr - DB schema inside TypeHandler. I dont need to use this DB schema parametr as result, so i dont map it in mybatis-config.xml
Schema parametr used in CallableStatement in ClobTypeHandler.
public class ClobTypeHandler extends BaseTypeHandler<String> {
public String scheme;
public ClobTypeHandler(String scheme) {
this.scheme = scheme;
}
public ClobTypeHandler() {
}
I've created my object factory:
public class ComponentObjectFactory extends DefaultObjectFactory {
String scheme;
public ComponentObjectFactory() {
}
public void setScheme(String scheme) {
this.scheme = scheme;
}
public <T> T create(Class<T> type) {
System.out.println("create:" + type);
return super.create(type);
}
public <T> T create(Class<T> type, List<Class<?>> constructorArgTypes, List<Object> constructorArgs) {
if (type.equals(ClobTypeHandler.class)) {
String scheme = (String)constructorArgs.get(0);
ClobTypeHandler cth = (ClobTypeHandler)super.create(type, constructorArgTypes, constructorArgs);
cth.scheme = scheme;
return cth;
} else {
return super.create(type, constructorArgTypes, constructorArgs);
}
}
}
And registered it in mybatis-config:
<typeHandlers>
<typeHandler javaType="java.lang.String"
jdbcType="CLOB"
handler="model.DB.ClobTypeHandler"/>
</typeHandlers>
<objectFactory type="services.ComponentObjectFactory">
<property name="name" value="ComponentObjectFactory"/>
</objectFactory>
But when myBatis creates an instance of ClobTypeHandler - it not uses my ComponentObjectFactory and even don't come to DefaultObjectFactory. I set breakpoints in constructors there and see it. As result when debug comes to ClobTypeHandler - it s another instance, not my, that i created as
ComponentObjectFactory cof = new ComponentObjectFactory();
cof.create(ClobTypeHandler.class, Arrays.asList(String.class), Arrays.asList(this.scheme));
How to force myBatis use my instance of ClobTypeHandler ?
How to force myBatis use my ComponentObjectFactory ?
How to force myBatis use only parameter constructor to convey schema parametr there ?