分享

mybatis使用generator自动生成代码时的类型转换

 instl 2015-02-25

使用mybatis的generator自动生成代码,但是oracle数据库中number(6,2)总是自动转成BigDecimal,我想要转成的是float类型

这样就写了一个类型转换器,需要继承JavaTypeResolver接口

然后在mybaties配置文件generatorConfig.xml中类型转换配置位置添加上即可

  1. <javaTypeResolver type="com.generator.MyJavaTypeResolver">  
  2.     <property name="forceBigDecimals" value="false" />                                            <!-- 类型解析器 -->  
  3. </javaTypeResolver>  
类型转换器MyJavaTypeResolver主要代码
  1. public FullyQualifiedJavaType calculateJavaType(  
  2.             IntrospectedColumn introspectedColumn) {  
  3.         // TODO Auto-generated method stub  
  4.          FullyQualifiedJavaType answer;  
  5.             JdbcTypeInformation jdbcTypeInformation = typeMap  
  6.                     .get(introspectedColumn.getJdbcType());  
  7.   
  8.             if (jdbcTypeInformation == null) {  
  9.                 switch (introspectedColumn.getJdbcType()) {  
  10.                 case Types.DECIMAL:  
  11.                 case Types.NUMERIC:  
  12.                     if(introspectedColumn.getScale() > 0)  
  13.                     {//如果包含小数点则转换成float  
  14.                         answer = new FullyQualifiedJavaType(Float.class.getName());  
  15.                     }else{  
  16.                         if ( introspectedColumn.getLength() > 18  
  17.                                 || forceBigDecimals) {  
  18.                             answer = new FullyQualifiedJavaType(BigDecimal.class  
  19.                                     .getName());  
  20.                         } else if (introspectedColumn.getLength() > 9) {  
  21.                             answer = new FullyQualifiedJavaType(Long.class.getName());  
  22.                         } else if (introspectedColumn.getLength() > 4) {  
  23.                             answer = new FullyQualifiedJavaType(Integer.class.getName());  
  24.                         } else {  
  25.                             answer = new FullyQualifiedJavaType(Short.class.getName());  
  26.                         }  
  27.                     }  
  28.                     break;  
  29.   
  30.                 default:  
  31.                     answer = null;  
  32.                     break;  
  33.                 }  
  34.             } else {  
  35.                 answer = jdbcTypeInformation.getFullyQualifiedJavaType();  
  36.             }  
  37.   
  38.             return answer;  
  39.     }  



    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多