mybatis使用generator自动生成代码时的类型转换,mybatisgenerator
使用mybatis的generator自动生成代码,但是oracle数据库中number(6,2)总是自动转成BigDecimal,我想要转成的是float类型
这样就写了一个类型转换器,需要继承JavaTypeResolver接口
然后在mybaties配置文件generatorConfig.xml中类型转换配置位置添加上即可
<javaTypeResolver type="com.generator.MyJavaTypeResolver"> <property name="forceBigDecimals" value="false" /> <!-- 类型解析器 --> </javaTypeResolver>类型转换器MyJavaTypeResolver主要代码
public FullyQualifiedJavaType calculateJavaType(
IntrospectedColumn introspectedColumn) {
// TODO Auto-generated method stub
FullyQualifiedJavaType answer;
JdbcTypeInformation jdbcTypeInformation = typeMap
.get(introspectedColumn.getJdbcType());
if (jdbcTypeInformation == null) {
switch (introspectedColumn.getJdbcType()) {
case Types.DECIMAL:
case Types.NUMERIC:
if(introspectedColumn.getScale() > 0)
{//如果包含小数点则转换成float
answer = new FullyQualifiedJavaType(Float.class.getName());
}else{
if ( introspectedColumn.getLength() > 18
|| forceBigDecimals) {
answer = new FullyQualifiedJavaType(BigDecimal.class
.getName());
} else if (introspectedColumn.getLength() > 9) {
answer = new FullyQualifiedJavaType(Long.class.getName());
} else if (introspectedColumn.getLength() > 4) {
answer = new FullyQualifiedJavaType(Integer.class.getName());
} else {
answer = new FullyQualifiedJavaType(Short.class.getName());
}
}
break;
default:
answer = null;
break;
}
} else {
answer = jdbcTypeInformation.getFullyQualifiedJavaType();
}
return answer;
}
mybatis3.0提供了代码生成的功能.目前最新的是mybatis-generator-core-1.3.1.这是一个比较灵活的插件.
当然不是IDE集成的,只是一个包.可以在命令行中使用,也可以用Ant,Maven甚至直接写到Java代码中来实现MyBatis代码的生成.如果它还是不满足则可以进行拓展.有了它就可以在使用建模工具生成数据库之后,连接数据库来生成相应的基础代码.包括了值对象,数据访问对象的接口及其MyBatis实现.
个人还是喜欢用Ant的方式.下面就用Ant生成的方式来说明.首先写个Ant文件来声明一些属性和几个Target.这些Target对于要生成的模块.分成多个模块便于管理和编译.
build.xml:查看文本复制到剪贴板<?xml??version="1.0"?????<project??default="sysGenerator"??basedir=
"."????????????<property??name="generated.source.dir"??value="${basedir}"??/????????????????<target??name="sysGenerator"??description="mybatis-generator"????????????????????<taskdef??name="sysGenerator"????????????????????????????classname="org.mybatis.generator.ant.GeneratorAntTask"????????????????????????????classpath=
"../Common_lib/mybatis-generator-core-1.3.1.jar"??/????????????????????<sysGenerator??overwrite="true"??configfile="sysGenerator.xml"??verbose="false"??????????????????????????????<propertyset????????????????????????????????????<propertyref??name="generated.source.dir"/????????????????????????????</propertyset????????????????????</sysGenerator????????????</target????</project????首先定义了一个名称为sysGenerator的Target.实际操作中可以按模块创建多个.它有个taskdef 定义的是任务的类型和要引用到的包.然后就是它的正文内容.configfile就是配置生成代码的信息.个人建议按照系统分模块.下面看看sysGenerator.xml这个文件的内容查看文本复制到剪贴板<generatorConfiguration??????......余下全文>>
不能。。。想都别想;
工具根本不知道不复杂的业务逻辑是什么。这才叫需求。