使用MyBatise的代码自动生成工具时候,即便在配置文件中定义了

  1. <javaTypeResolver>
  2. <property name="forceBigDecimals" value="false" />
  3. </javaTypeResolver>

生成之后的实体中number类型转换成JAVA类型还是会被转换为BigDecimal类型。

测试发现:

Oracle数据库,用mybatis-gen.xml 自动生成Java对象的时候,会根据number类型的长度不同生成不同的数据类型

number长度 Java类型
1~4 Short
5~9 Integer
10~18 Long
18+ BigDecimal

所以必须指定number类型的大小

########################################################################

或者自定义一个类型转换器,继承JavaTypeResolver接口

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

  1. <javaTypeResolver type="com.generator.MyJavaTypeResolver">
  2. <property name="forceBigDecimals" value="false" /> <!-- 类型解析器 -->
  3. </javaTypeResolver>

类型转换器MyJavaTypeResolver主要代码

  1. public FullyQualifiedJavaType calculateJavaType(IntrospectedColumn introspectedColumn) {
  2. // TODO Auto-generated method stub
  3. FullyQualifiedJavaType answer;
  4. JdbcTypeInformation jdbcTypeInformation = typeMap.get(introspectedColumn.getJdbcType());
  5. if (jdbcTypeInformation == null) {
  6. switch (introspectedColumn.getJdbcType()) {
  7. case Types.DECIMAL:
  8. case Types.NUMERIC:
  9. if(introspectedColumn.getScale() > 0)
  10. {//如果包含小数点则转换成float
  11. answer = new FullyQualifiedJavaType(Float.class.getName());
  12. }else{
  13. if ( introspectedColumn.getLength() > 18
  14. || forceBigDecimals) {
  15. answer = new FullyQualifiedJavaType(BigDecimal.class
  16. .getName());
  17. } else if (introspectedColumn.getLength() > 9) {
  18. answer = new FullyQualifiedJavaType(Long.class.getName());
  19. } else if (introspectedColumn.getLength() > 4) {
  20. answer = new FullyQualifiedJavaType(Integer.class.getName());
  21. } else {
  22. answer = new FullyQualifiedJavaType(Short.class.getName());
  23. }
  24. }
  25. break;
  26. default:
  27. answer = null;
  28. break;
  29. }
  30. } else {
  31. answer = jdbcTypeInformation.getFullyQualifiedJavaType();
  32. }
  33. return answer;
  34. }

MyBatise代码自动生成时候Oralce的number类型BigDecimal问题的更多相关文章

  1. 实现一个代码自动生成(一):模板引擎Freemarker

    目录 前言 模板引擎FreeMarker 前言 在现在的开发当中,代码生成已经是必不可少的一个功能,每个公司都会有自己的一套定制的项目骨架,而实现代码自动生成,模板引擎是必不可少的,所以在这篇博客中, ...

  2. MyBatis代码自动生成

    MyBatis的代码自动生成的功能,由于MyBatis属于一种半自动的ORM框架,所以主要的工作就是配置Mapping映射文件,但是由于手写映射文件很容易出错,所以可利用MyBatis生成器自动生成实 ...

  3. 代码自动生成工具_java版

    项目结构: 这里要实现的功能是,当我们给出了bean,如:Admin,User,People等实体类后, 我想用代码自动生成我想要的代码,最后生成的效果: 也就是说为每一个bean都生成相应的Dao, ...

  4. mybatisGenerator 代码自动生成报错 Result Maps collection already contains value for BaseResultMap【转】

    由于mybatis简单易学,比起Hibername来,更容易上手,代码也能自动生成.这几天研究了下代码自动生成的,参考: http://0609xiaohua.iteye.com/blog/14535 ...

  5. 代码自动生成工具MyGeneration之一(程序员必备工具)

    代码自动生成工具MyGeneration之一(程序员必备工具) 转 分类: C#2008-08-06 18:12 16064人阅读 评论(12) 收藏 举报 工具数据库相关数据库stringbrows ...

  6. 基于eclipse的mybatis映射代码自动生成的插件

    基于eclipse的mybatis映射代码自动生成的插件 分类: JAVA 数据库 工具相关2012-04-29 00:15 2157人阅读 评论(9) 收藏 举报 eclipsegeneratori ...

  7. 基于eclipse的mybatis映射代码自动生成的插件http://blog.csdn.net/fu9958/article/details/7521681

    基于eclipse的mybatis映射代码自动生成的插件 分类: JAVA 数据库 工具相关2012-04-29 00:15 2157人阅读 评论(9) 收藏 举报 eclipsegeneratori ...

  8. Spring Boot (七)MyBatis代码自动生成和辅助插件

    一.简介 1.1 MyBatis Generator介绍 MyBatis Generator 是MyBatis 官方出品的一款,用来自动生成MyBatis的 mapper.dao.entity 的框架 ...

  9. Mybatis Generator代码自动生成(实体类、dao层、映射文件)

    写了一段时间增删改查有点厌烦,自己找了下网上的例子鼓捣了下自动生成. 首先得有一个配置文件: generatorConfig.xml <?xml version="1.0" ...

随机推荐

  1. struts2的琐碎知识点

    servlet:void init(ServletConfig cfg):// 读取servlet的配置参数void service(ServletRequest request, ServletRe ...

  2. Introduction to Structured Data json的2种形式 JAVA解析JSON数据 - JsonArray JsonObject

    https://developers.google.com/search/docs/guides/intro-structured-data Structured data refers to kin ...

  3. Team Formation---zoj3870(异或)

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5518 题意就是有n个数,如果满足a^b > MAX(a, b) ...

  4. MegaCli 监控raid状态

    MegaCli 监控raid状态 http://blog.chinaunix.net/uid-25135004-id-3139293.html 简介 MegaCli是一款管理维护硬件RAID软件,可以 ...

  5. OPENSSL编程 (secure shell, ssh)

    很好的 OPENSSL编程 教程,名字就叫“OPENSSL编程” 它里面还有很多关于密码学的东西. http://www.pengshuo.me http://www.pengshuo.me/2014 ...

  6. django高级之点赞、文章评论及上传文件

    目录: 点赞 文章评论 上传文件 保留页面条件 一.点赞 1.所用技术: django model F查询 js应用:$(function () {}); 为文件加载完成执行ready() 方法.等同 ...

  7. docker镜像文件导入与导出,支持批量

    工作中经常需要拉取一些国外的镜像,但是网络限制等原因在公司拉取很慢,所以我习惯用亚马逊服务器拉取镜像,导出后下载到本地再导入开发环境 1. 查看镜像id sudo docker images REPO ...

  8. CentOS 7 开放端口

    因为CentOS升级到7之后,发现无法使用iptables控制Linuxs的端口,因为CentOS 7使用firewalld代替了原来的iptables.下面记录如何使用firewalld开放Linu ...

  9. oauth2(转载http://www.rollosay.com/it/%E4%BD%BF%E7%94%A8OAuth-Server-PHP%E5%AE%9E%E7%8E%B0OAuth2%E6%9C%8D%E5%8A%A1)

    http://www.rollosay.com/it/%E4%BD%BF%E7%94%A8OAuth-Server-PHP%E5%AE%9E%E7%8E%B0OAuth2%E6%9C%8D%E5%8A ...

  10. RabittMQ实践(一): RabbitMQ的安装、启动

    安装:   启动监控管理器:rabbitmq-plugins enable rabbitmq_management 关闭监控管理器:rabbitmq-plugins disable rabbitmq_ ...