1.自定义转换类
标红区域为与默认配置不同地方。
代码如下:
import org.mybatis.generator.api.IntrospectedColumn;
import org.mybatis.generator.api.dom.java.FullyQualifiedJavaType;
import org.mybatis.generator.internal.types.JavaTypeResolverDefaultImpl;
public class MyJavaTypeResolver extends JavaTypeResolverDefaultImpl{
public FullyQualifiedJavaType calculateBigDecimalReplacement(IntrospectedColumn column, FullyQualifiedJavaType defaultType) {
FullyQualifiedJavaType answer;
if (column.getScale() > 0 || column.getLength() > 18 || forceBigDecimals) {
answer = defaultType;
} else if (column.getLength() > 9) {
answer = new FullyQualifiedJavaType(Long.class.getName());
} else if (column.getLength() > 4) {
answer = new FullyQualifiedJavaType(Integer.class.getName());
} else {
answer = new FullyQualifiedJavaType(Long.class.getName());
}
return answer;
}
}
2.使用该转换类
2.1generatorConfig.xml
generatorConfig.xml中javaTypeResolver 标签添加type属性
2.2或者Generator.java添加该转换类
代码如下:
import java.util.ArrayList;
import java.util.List;
import org.junit.jupiter.api.Test;
import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.Context;
import org.mybatis.generator.config.JavaTypeResolverConfiguration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.internal.DefaultShellCallback;
public class Generator {
@Test
public void testGenrator() {
List<String> warnings = new ArrayList<String>();
boolean overwrite = true;
ConfigurationParser cp = new ConfigurationParser(warnings);
Configuration config = null;
try {
config = cp.parseConfiguration(Generator.class.getResourceAsStream("/generator/generatorConfig.xml"));
JavaTypeResolverConfiguration javaTypeConfig = new JavaTypeResolverConfiguration();
javaTypeConfig.setConfigurationType("com.zy.just.base.custom.MyJavaTypeResolver");
Context context = config.getContext("DB2Tables");
context.setJavaTypeResolverConfiguration(javaTypeConfig);
DefaultShellCallback callback = new DefaultShellCallback(overwrite);
MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
myBatisGenerator.generate(null);
System.err.println("done");
} catch (Exception e) {
e.printStackTrace();
}
}
}