项目作者: HJKCC

项目描述 :
以mybatis-generator-core 为基础的插件
高级语言: Java
项目地址: git://github.com/HJKCC/mybatis-generator-plugins.git
创建时间: 2019-05-28T03:24:47Z
项目社区:https://github.com/HJKCC/mybatis-generator-plugins

开源协议:

下载


项目介绍

mybatis-generator-plugins 是以 mybatis-generator-core 为基础实现的代码生成插件,为我们自动生成DO类、DAO类和_SqlMap.xml文件,并提供增删查改等基本方法。

核心类

org.mybatis.generator.api.ShellRunner

主程序入口

继承 org.mybatis.generator.api.PluginAdapter 类

分布式开发的话,由 mybatis generator 插件生成的 实体类 和 *Example 类都必须要序列化

  1. <plugin type="com.cc.mybatis.generator.SerializablePlugin"></plugin>

继承 org.mybatis.generator.internal.DefaultCommentGenerator 类

自定义代码生成器中生成实体类的中文注释

  1. <commentGenerator type="com.cc.mybatis.generator.MyCommentGenerator">
  2. <property name="author" value="chencheng0816@gmail.com"></property>
  3. <property name="dateFormat" value="yyyy/MM/dd"></property>
  4. </commentGenerator>

修改 org.mybatis.generator.config.TableConfiguration 类

自定义

属性的默认值,默认不生成 Example类

org.mybatis.generator.config.xml.MyBatisGeneratorConfigurationParser 的 parseTable 方法

解析并处理

各个属性

org.mybatis.generator.api.IntrospectedTable

calculateJavaClientAttributes(): 自定义DAO文件名

  1. if (stringHasValue(tableConfiguration.getMapperName())) {
  2. sb.append(tableConfiguration.getMapperName());
  3. } else {
  4. if (stringHasValue(fullyQualifiedTable.getDomainObjectSubPackage())) {
  5. sb.append(fullyQualifiedTable.getDomainObjectSubPackage());
  6. sb.append('.');
  7. }
  8. // 自定义DAO文件名
  9. String domainObjectName = fullyQualifiedTable.getDomainObjectName();
  10. int domainObjectNameLength = domainObjectName.length();
  11. sb.append(domainObjectName.substring(0, domainObjectNameLength - 2));
  12. sb.append("DAO");
  13. }

calculateMyBatis3XmlMapperFileName(): 自定义map xml文件名

  1. if (stringHasValue(tableConfiguration.getMapperName())) {
  2. String mapperName = tableConfiguration.getMapperName();
  3. int ind = mapperName.lastIndexOf('.');
  4. if (ind == -1) {
  5. sb.append(mapperName);
  6. } else {
  7. sb.append(mapperName.substring(ind + 1));
  8. }
  9. sb.append(".xml"); //$NON-NLS-1$
  10. } else {
  11. // 自定义map xml文件名
  12. String domainObjectName = fullyQualifiedTable.getDomainObjectName();
  13. int domainObjectNameLength = domainObjectName.length();
  14. sb.append(domainObjectName.substring(0, domainObjectNameLength - 2));
  15. sb.append("_SqlMap.xml"); //$NON-NLS-1$
  16. }

插件打包

maven打包指令

mvn clean install

插件引用

项目添加 mybatis-generator-plugins 包依赖后,修改 resources 路径下的 generatorConfig.xml, Maven 执行命令(mvn mybatis-generator:generate)自动生成代码

  1. 配置依赖及插件 pom.xml
    1. <!-- 添加 mybatis-generator 插件(命令运行方式:进入工程目录执行:mvn mybatis-generator:generate 生成代码) -->
    2. <plugin>
    3. <groupId>org.mybatis.generator</groupId>
    4. <artifactId>mybatis-generator-maven-plugin</artifactId>
    5. <version>1.3.7</version>
    6. <configuration>
    7. <!-- 配置文件 -->
    8. <configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
    9. <!-- 允许移动和修改 -->
    10. <verbose>true</verbose>
    11. <overwrite>true</overwrite>
    12. </configuration>
    13. <dependencies>
    14. <!-- jdbc 依赖 -->
    15. <dependency>
    16. <groupId>mysql</groupId>
    17. <artifactId>mysql-connector-java</artifactId>
    18. <version>${mysql.driver.version}</version>
    19. </dependency>
    20. <dependency>
    21. <groupId>com.cc</groupId>
    22. <artifactId>mybatis-generator-plugins</artifactId>
    23. <version>${project.parent.version}</version>
    24. </dependency>
    25. </dependencies>
    26. </plugin>
  2. 配置 generatorConfig.xml
    ```
  1. <!-- 生成的Java文件的编码 -->
  2. <property name="javaFileEncoding" value="UTF-8"></property>
  3. <!-- 格式化java代码 -->
  4. <property name="javaFormatter" value="org.mybatis.generator.api.dom.DefaultJavaFormatter"></property>
  5. <!-- 格式化XML代码 -->
  6. <property name="xmlFormatter" value="org.mybatis.generator.api.dom.DefaultXmlFormatter"></property>
  7. <!-- 为生成的Java模型类添加序列化接口 -->
  8. <plugin type="com.cc.mybatis.generator.SerializablePlugin"></plugin>
  9. <!-- 为生成的Java模型创建一个toString方法 -->
  10. <plugin type="org.mybatis.generator.plugins.ToStringPlugin"></plugin>
  11. <!-- 自定义代码生成器中生成实体类的中文注释 -->
  12. <commentGenerator type="com.cc.mybatis.generator.MyCommentGenerator">
  13. <property name="author" value="chencheng0816@gmail.com"></property>
  14. <property name="dateFormat" value="yyyy/MM/dd"></property>
  15. </commentGenerator>
  16. <!--数据库链接地址账号密码-->
  17. <jdbcConnection driverClass="${mbg.db.driverClassName}" connectionURL="${mbg.db.url}" userId="${mbg.db.username}" password="${mbg.db.password}">
  18. <property name="useInformationSchema" value="true"></property>
  19. </jdbcConnection>
  20. <!-- java类型处理器 用于处理DB中的类型到Java中的类型,默认使用JavaTypeResolverDefaultImpl; 注意一点,默认会先尝试使用Integer,Long,Short等来对应DECIMAL和 NUMERIC数据类型; -->
  21. <javaTypeResolver>
  22. <property name="forceBigDecimals" value="false"></property>
  23. </javaTypeResolver>
  24. <!--生成Model类存放位置-->
  25. <javaModelGenerator targetPackage="com.cc.model" targetProject="${mbg.path}/java">
  26. <property name="enableSubPackages" value="false"></property>
  27. <property name="trimStrings" value="true"></property>
  28. </javaModelGenerator>
  29. <!--生成映射文件存放位置-->
  30. <sqlMapGenerator targetPackage="mapper" targetProject="${mbg.path}/resources">
  31. <property name="enableSubPackages" value="false"></property>
  32. </sqlMapGenerator>
  33. <!--生成Dao类存放位置-->
  34. <javaClientGenerator targetPackage="com.cc.dao" targetProject="${mbg.path}/java" type="XMLMAPPER">
  35. <property name="enableSubPackages" value="false"></property>
  36. </javaClientGenerator>
  37. <!--生成对应表及类名-->
  38. <table tableName="BE_USER" domainObjectName="UserDO"></table>

  1. 3. 配置检查及生成代码

配置检查:mvn mybatis-generator:help
生成代码:mvn mybatis-generator:generate
```