使用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;
}