mybatis generator 源码修改

项目中使用mybatis + 通用mapper,用mybatis generator生成代码时有些不方便,参考了网上的一些例子,修改mybatis genrerator的源码。

首先,下载mybatis generator 1.3.6 源码(注意,版本不同代码肯定有比较大的差别),打开之后目录结果如下,所有要修改的代码,都在子项目mybatis-generator-core中

mybatis generator 源码修改_第1张图片

 

1、禁止生成mybatis自带的example文件及相应的方法,禁止数据库字段名驼峰转换,去掉数据库表名前缀

  这些都不需要改源码,只需要在自己写的mybatis generator配置文件中做一下设置,如下图

  mybatis generator 源码修改_第2张图片

  【注意】第二条,domainObjectRenamingRule,此属性,我印象中在mybatis-generator-1.3.6/1.3.7存在,以前版本好像没有,具体我就不考证了。

2、实体类

  2.1 去掉getter,setter方法,使用lombok的@Data注解代替,加入@Table注解,@Id等注解。

  在包org.mybatis.generator.plugins下,新建一个继承自PluginAdapter(位于org.mybatis.generator.api下)的类,名字随意,我这里的名字叫LombokPlugin,

  在LombokPlugin覆写PluginAdapter的PluginAdapter.modelSetterMethodGenerated()以及modelGetterMethodGenerated(),令两个方法都返回false

   mybatis generator 源码修改_第3张图片

  2.2 修改类注解

  覆写PluginAdapter.modelBaseRecordClassGenerated()

  这里实体类上加入了@Data,@Accessors,@Table,通过参数intrspectedTable获取到数据库表名

  mybatis generator 源码修改_第4张图片

 

  2.3 在id字段上加入@Id和@GeneratedValue

   覆写PluginAdapter.modelFieldGenerated(),给自增的字段或者名为id的字段增加注解@Id和GeneratedValue,所有字段,都添加@Column

  mybatis generator 源码修改_第5张图片

 3、禁止生成所有默认的方法,selectByPrimaryKey,updateByPrimaryKey,deleteByPrimaryKey,insert,insertSelective,包括interface和xml文件中

   这个只要对以下配置全部置为false就可以,

   mybatis generator 源码修改_第6张图片

  然而,虽然方法都没有了,可造成两个后果1、实体类、interface、xml文件不生成了2、即便生成,xml文件缺少元素

  对于后果1,修改org.mybatis.generator.config.Context.introspectTables(),把如下位置的continue语句注释掉,这样,在mybatis 配置文件的table元素,当所有enableInsert enableSelectByPrimaryKey等等都为false的情况下,仍然可以生成entity,interface,xml

  

  对于后果2,xml文件缺少,比较麻烦,因为通过代码发现,生成resultMap的代码在org.mybatis.generator.codegen.mybatis3.xmlmapper.elements.SelectByPrimaryKeyElementGenerator.addElements()中,因此enableSelectByPrimaryKey必须为true

  mybatis generator 源码修改_第7张图片

 

  这样就必须修改在interface和xml中生成selectByPrimaryKey的方法,

  3.1 修改接口方法

  修改org.mybatis.generator.codegen.mybatis3.javamapper.elements.SelectByPrimaryKeyMethodGenerator.addInterfaceElements()

  注释interfaze.addMethod(method);

  mybatis generator 源码修改_第8张图片

  3.2 修改生成xml的方法

  修改org.mybatis.generator.codegen.mybatis3.xmlmapper.elements.SelectByPrimaryKeyElementGenerator.addElements()

  注释parentElement.addElement(answer);

  mybatis generator 源码修改_第9张图片

  通过以上修改,enableSelectByPrimaryKey=true,也不会在interface和xml中生成selectByPrimaryKey,并且保留xml中的

4、mapper接口文件添加extends Mapper<实体类>,并且加入import语句 

  在LombokPlugin中,覆写PluginAdapter.clientGenerated(),

  introspectedTable.getBaseRecordType获取实体类名

  interfaze.addSuperInterface添加继承类

  interfaze.addImportedType添加要import的类型

   mybatis generator 源码修改_第10张图片

5、打包

  修改了代码,还需要生成jar包,并把jar包更新到本地maven repository中

  mybatis generator 源码修改_第11张图片

6、如何使用mybatis generator

  当修改了代码的mybatis generator的jar包更新到本地maven仓库中后(上一步),就可以在项目中通过maven命令生成文件,操作方法如下

  在项目pom文件中引入mybatis generator

  mybatis generator 源码修改_第12张图片

  然后,在pom中添加如下内容,其中generatorConfig.xml是你的mybatis generator配置文件,这个文件mybatis generator有模板,这里不做说明

  mybatis generator 源码修改_第13张图片

  然后,修改mybatis generator 配置文件各个参数,如数据库链接,生成的路径,指定表名或全部生成等参数,

  最后,在Maven Projects的如图位置,双击mybatis-generator:generate,即可生成文件。

   mybatis generator 源码修改_第14张图片

 

转载于:https://www.cnblogs.com/leondryu/p/10401346.html

你可能感兴趣的:(java,开发工具,数据库)