mybatis generator如何定制JavaTypeResolver,使smallint类型的数据库字段在po中的类型为Integer?   一、问题概述 二、解决办法 三、源码

一、问题概述

忙了一段时间的jenkins持续集成,又要开始开发任务了。这两天在用mybatis generator来逆向生成dao层工程。

其中一个问题在于,组长在设计表的时候,不少枚举使用了smallint类型,如下:

mybatis generator如何定制JavaTypeResolver,使smallint类型的数据库字段在po中的类型为Integer?
 
一、问题概述
二、解决办法
三、源码

然后,mybatis generator就会针对smallint类型的列,生成short类型的java域。

我还是偏爱Integer,因为懒。懒得转来转去。

二、解决办法

 修改mybatis generator使用的默认的JavaTypeResolver实现。

其默认实现为org.mybatis.generator.internal.types.JavaTypeResolverDefaultImpl,其中有如下的一段:

mybatis generator如何定制JavaTypeResolver,使smallint类型的数据库字段在po中的类型为Integer?
 
一、问题概述
二、解决办法
三、源码

这个一猜就是,将smallint类型的字段,映射为Short类型的java域。

我的办法是将其默认实现类的内容复制,然后修改了上图中的标识处,然后配置到xml文件中。

mybatis generator如何定制JavaTypeResolver,使smallint类型的数据库字段在po中的类型为Integer?
 
一、问题概述
二、解决办法
三、源码

上面就是我自定义的类型解析器,内容拷贝了默认实现。然后照下面这样修改了:

mybatis generator如何定制JavaTypeResolver,使smallint类型的数据库字段在po中的类型为Integer?
 
一、问题概述
二、解决办法
三、源码

配置到xml:

mybatis generator如何定制JavaTypeResolver,使smallint类型的数据库字段在po中的类型为Integer?
 
一、问题概述
二、解决办法
三、源码

差不多就这样。ok了。

三、源码

https://github.com/cctvckl/customed-mybatis-generator