`
changhongbao
  • 浏览: 123270 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

修改mybatis-generator-1.3.2源码实现自定义代码生成详解(一)

 
阅读更多

相信很多人都用过mybatis-generator-core生成pojoxml文件,但是这工具最后一个版本是1.3.2版,20127月后就没再更新了,同时因为这玩意是老外写的,可能与咱们国人的有些习惯不一致,所以在使用上总会感觉不怎么爽,大象也有这个体会,所以对源码作过一些修改,现将这些总结分享出来给需要的朋友。
    首先大象得说一下,我对mybatis-generator-core也没有太深入的了解,仅仅是把它当成一个工具,只是感觉用的不顺手,就稍微了解了一下,顺便改了改。所以本篇没涉及到的地方,如果你知道,还请多多分享,大象感激不尽。另外,我对源码的修改主要是针对MySQL数据库,在第二篇中会讲到。
    这个项目本身是放在googlecode上面的,但是有一道“墙”,你懂的。所以得换个方式来获得源码。
    首先新建一个maven工程,添加下面的依赖,使用mavenDownload Sources,获得mybatis-generator-core的源码。

<dependency>
    <groupId>org.mybatis.generator</groupId>
        <artifactId>mybatis-generator-core</artifactId>
        <version>1.3.2</version>
</dependency>

    将源码解压放到工程里面,然后就可以开始修改了。记得把之前的依赖去掉哦!我主要说明改哪些源码,以及作用。
    org.mybatis.generator.api.dom.OutputUtilities
    mybatis-generator里面我觉得首先最应该改的就是OutputUtilities这个类,它里面有个xmlIndent方法是用来控制生成的xml文件中空格的缩进,默认是两个空格,但四个空格对于我们来说已经深入骨髓了,所以必须改。sb.append("  ")里面增加两个空格就可以了。
    

    org.mybatis.generator.api.dom.java.InnerClass
    这个类就是用来控制生成pojo类以及格式化,我主要是修改属性之间以及方法之间的换行。
    源文件:
    

    178-180行就是在每个属性后面增加一个换行,大象喜欢紧凑风格的代码,于是就把红框内的代码去掉了。再看下图,注意红线的172行,在这里增加换行是让生成的第一个属性与类的声明之间有一个空行。
    

    如果你觉得gettersetter方法也不想有空行,可以把源文件的206-208行这段代码去掉,大家可以根据自己的习惯来,大象在这里把它去掉。
    org.mybatis.generator.codegen.mybatis3.IntrospectedTableMyBatis3Impl
    这个类的第210行有个getGeneratedXmlFiles()方法,注意下图中红线的true这个属性,它是用来控制是否合并生成xml文件,这里显然默认就是合并,对于我们来说,修改数据库表结构是经常发生的事情,不能每次重新生成之后,都手动去删除吧?所以这里要坚决的把它改成false
    

    现在我们将true改成了false,问题解决了,但是它究竟是在哪里起作用的呢?请看org.mybatis.generator.api.MyBatisGenerator这个类252,它包含在generate方法里。
    

    第一个if就会判断是否合并,上图中已经显示了isMergeabletrue,所以当然是合并了,但我们将它改成false后,一定要在执行的命令行里加上overwrite参数,这样才能够让shellCallback.isOverwriteEnabled()生效,从而实现我们的xml文件覆盖生成。
    mybatis-generator除了默认会合并xml文件外,还会默认生成一个带Example后缀的pojo,它有点类似HibernateCriteria对象。另外它还会在xml里面默认会生成一堆id="xxxByExample"的东西,这些都要用到那个Example类,不光如此,为了配合起来用,还有一堆与之相关的<sql>标记,所有这些在大象看来都不需要,我们使用MyBatis不就是为了它的简洁与方便吗?所以我不想看到它,需要怎么改呢?可以在配置文件里面修改。
    

    加上这些属性设置,就会过滤掉我之前说的东西,而且Example类也不会再出现,呵呵,世界终于清净一些了。
    这些属性是设置到org.mybatis.generator.config.TableConfiguration类里面起作用的,它里面有这些属性与之对应的set方法,那么配置文件中的boolean值是在哪里设置的呢?它们是在初始化解析配置文件的时候做的,完成它的类是:
    org.mybatis.generator.config.xml.MyBatisGeneratorConfigurationParser
    

    这段代码在parseTable里面,tc就是TableConfiguration,现在大家明白了吧?
    mybatis-generator还有一个让人不爽的地方就是会在pojoxml中生成一堆英文注释,这东西完全没什么用,我想把它去掉,像下面这样在配置文件中加上这一段。
    
    看到这里有童鞋就有意见了,泥妹的,这不是一刀切了么。我只是不想在xml里生成注释,另外想在pojo类里添加自定义注释,这个是可以做到的,下一篇大象会讲这方面的内容。
    本文为菠萝大象原创,如要转载请注明出处。http://www.blogjava.net/bolo

分享到:
评论

相关推荐

    mybatis-generator-1.3.2 代码生成

    【标题】"mybatis-generator-1.3.2 代码生成" 涉及到的是一个基于MyBatis框架的代码生成工具,主要用于自动化地创建MyBatis的SQL映射文件、Mapper接口、Mapper XML文件以及实体类。这个工具极大地提高了开发效率,...

    mybatis-generator-core-1.3.2

    "mybatis-generator-core-1.3.2" 是 MBG 的一个特定版本,它包含了所有必要的组件来帮助我们自动化 MyBatis 配置和代码生成过程。 MyBatis Generator 使用 XML 配置文件来定义生成规则,包括数据库连接信息、表选择...

    mybatis-generator-core-1.3.2注释修改

    在`mybatis-generator-core-1.3.2`版本中,我们关注的是如何通过数据库中的字段注释(comment)来生成Java代码的注释。 在默认情况下,MBG并不直接将数据库字段的注释转化为Java类中的字段注释。因此,如果你想要在...

    逆向工程mybatis-generator-1.3.2

    在这个场景中,“逆向工程mybatis-generator-1.3.2”指的是对MyBatis Generator 1.3.2版本的源代码或执行流程进行逆向分析。MyBatis Generator(MBG)是一个强大的工具,能够自动生成MyBatis接口和映射器XML文件,...

    mybatis-generator-core-1.3.2 解压即用

    mybatis-generator-core-1.3.2代码自动生成 官网下载解压即用 内含 mybatis-3.2.6.jar/mybatis-generator-core-1.3.2.jar/mysql-connector-java-5.1.30.jar/mybatis-generator-core-1.3.2-javadoc.jar/mybatis-...

    mybatis-generator-core-1.3.2.zip

    `mybatis-generator-core-1.3.2.zip` 文件是MyBatis Generator的一个版本,即1.3.2版,它包含了实现这一功能的所有必要组件。这个版本的MBG支持MyBatis框架的逆向工程,通过解析数据库中的表结构,自动创建与之对应...

    mybatis-generator-core-1.3.2 自动生成文件

    MyBatis Generator Core 1.3.2 是一个强大的工具,用于自动生成MyBatis的映射文件、Java模型类以及DAO接口。这个版本的工具是MyBatis框架的一个重要组成部分,它极大地简化了开发过程,减少了手动编写SQL映射和Java...

    mybatis-plus最新代码生成器项目源码 :mybatis-plus-generator.zip

    mybatis-plus最新代码生成器项目源码 :mybatis-plus-generator.zip mybatis-plus最新代码生成器项目源码 :mybatis-plus-generator.zip mybatis-plus最新代码生成器项目源码 :mybatis-plus-generator.zip ...

    mybatis逆向工程代码生成工具mybatis-generator-core-1.3.2-bundle.zip

    MyBatis Generator(MBG)是一个强大的工具,用于自动生成MyBatis的DAO层、XML映射文件以及对应的Java Bean类。它极大地简化了开发工作,使得开发者无需手动编写这些重复性的代码,从而能更专注于业务逻辑的实现。在...

    mybatis-generator-core-1.3.2(含有源码--生成注释、自定义sql)

    mybatis-generator-core-1.3.2(含有源码--生成注释、自定义sql) 只需修改2个文件即可,生成了mysql字段的注释,以及去除多余无用的sql,只留下增删改查,文件内含源码和已经打好的jar包,直接使用即可

    mybatis-generator-core-1.3.2.jar 

    Mybatis-Generator是一个强大的工具,它能够帮助Java开发者自动生成Mybatis的相关代码,极大地提高了开发效率。这个"mybatis-generator-core-1.3.2.jar"文件是Mybatis Generator的核心库,版本为1.3.2,它包含了执行...

    mybatis-generator-core-1.3.2.rar

    总的来说,MyBatis Generator是MyBatis框架的一个强大补充,通过自动化代码生成,极大地提高了开发效率,减少了重复劳动,让开发者能更专注于业务逻辑的实现。正确配置并合理使用MBG,可以显著提升开发团队的生产力...

    mybatis逆向工程mybatis-generator-core-1.3.2jar包

    `mybatis-generator-core-1.3.2.jar`是MBG的一个特定版本,该版本支持对数据库表进行反向工程,生成相关的Java类和XML配置,使开发者无需手动编写繁琐的DAO层代码。 在使用MBG时,我们需要创建一个配置文件(通常...

    mybatis-generator-core-1.3.2(含有源码--生成注释、自定义sql)第二版本

    mybatis-generator-core-1.3.2(含有源码--生成注释、自定义sql)2.0版本

    mybatis-generator-config_1_0.dtd

    mybatis-generator-config_1_0.dtd文件存在于mybatis-generator-core-1.3.2.jar包中,路径如下org/mybatis/generator/config/xml/mybatis-generator-config_1_0.dtd 可以设置开发工具的dtd配置,配置...

    Mybatis逆向生成工具mybatis-generator-core-1.3.2.jar包

    这里我们将深入探讨MBG的核心功能、工作原理以及如何使用mybatis-generator-core-1.3.2.jar这个版本来自动化生成代码。 首先,MyBatis Generator基于数据库表结构,通过配置文件指定数据库连接信息、表名以及需要...

    mybatis-generator-core-1.3.2 mybatis自动生成工具

    总之,mybatis-generator-core-1.3.2 是 MyBatis Generator 的一个重要版本,它简化了与 MyBatis 集成时的代码编写工作,使得开发人员可以更加专注于业务逻辑,而不是重复的基础代码。通过熟练掌握 MBG 的使用,可以...

Global site tag (gtag.js) - Google Analytics