当前位置:   article > 正文

gradle-generator自动生成代码的两种方式_gradle 集成 generator

gradle 集成 generator

一:利用ant

文件结构预览图:

在build.gradle文件中引入如下代码:

  1. configurations{
  2. mybatisGenerator
  3. }
  4. dependencies {
  5. testCompile group: 'junit', name: 'junit', version: '4.12'
  6. compile group: 'org.mybatis', name: 'mybatis', version: '3.5.1'
  7. mybatisGenerator 'org.mybatis.generator:mybatis-generator-core:1.3.7'
  8. mybatisGenerator 'tk.mybatis:mapper:4.0.3'
  9. mybatisGenerator 'mysql:mysql-connector-java:5.1.46'
  10. }
  11. apply from: "generator.gradle"

将generator.gradle文件apply加入build.gradle中,generator.gradle全代码如下:

  1. def getDbProperties = {
  2. def properties = new Properties()
  3. file("/src/main/resources/mybatisGenerator.properties").withInputStream { inputStream ->
  4. properties.load(inputStream)
  5. }
  6. properties
  7. }
  8. task mybatisGenerate << {
  9. def dbProperties = getDbProperties()
  10. ant.properties['targetProject'] = projectDir.path
  11. ant.properties['jdbc_driver'] = dbProperties.getProperty("jdbc_driver")
  12. ant.properties['jdbc_url'] = dbProperties.getProperty("jdbc_url")
  13. ant.properties['jdbc_user'] = dbProperties.getProperty("jdbc_user")
  14. ant.properties['jdbc_password'] = dbProperties.getProperty("jdbc_password")
  15. //ant.properties['src_main_java'] = sourceSets.main.java.srcDirs[0].path
  16. ant.properties['src_main_java'] = dbProperties.getProperty("project")
  17. //ant.properties['src_main_resources'] = sourceSets.main.resources.srcDirs[0].path
  18. ant.properties['src_main_resources'] = dbProperties.getProperty("resources")
  19. ant.properties['modelPackage'] = dbProperties.getProperty("package_model")
  20. ant.properties['mapperPackage'] = dbProperties.getProperty("package_mapper")
  21. ant.properties['sqlMapperPackage'] = dbProperties.getProperty("package_xml")
  22. ant.taskdef(
  23. name: 'mbgenerator',
  24. classname: 'org.mybatis.generator.ant.GeneratorAntTask',
  25. classpath: configurations.mybatisGenerator.asPath
  26. )
  27. ant.mbgenerator(overwrite: true,
  28. configfile: '..\\generator\\src\\main\\resources\\generatorConfig.xml', verbose: true) {
  29. propertyset {
  30. propertyref(name: 'targetProject')
  31. propertyref(name: 'jdbc_user')
  32. propertyref(name: 'jdbc_driver')
  33. propertyref(name: 'jdbc_url')
  34. propertyref(name: 'jdbc_password')
  35. propertyref(name: 'src_main_java')
  36. propertyref(name: 'src_main_resources')
  37. propertyref(name: 'modelPackage')
  38. propertyref(name: 'mapperPackage')
  39. propertyref(name: 'sqlMapperPackage')
  40. }
  41. }
  42. }

generator.gradle代码分析:

1.定义了getDbProperties方法用来加载mybatisGenerator.properties配置文件;

2.定义了task任务,将步骤一加载到的配置文件结合generatorConfig.xml实现代码自动生成;

在gradle-tasks下的other会生成一个mybatisGenerate同名任务,一键任务自动生成。


 

mybatisGenerator.properties全代码如下,定义了数据库配置和生产文件路径等:

  1. #Mybatis Generator configuration
  2. project =src/main/java
  3. resources=src/main/resources
  4. jdbc_driver=com.mysql.jdbc.Driver
  5. jdbc_url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8
  6. jdbc_user=root
  7. jdbc_password=123456
  8. # 生成实体类所在的包
  9. package_model=com.core
  10. # 生成 mapper 类所在的包
  11. package_mapper=com.core
  12. # 生成 mapper xml 文件所在的包,默认存储在 resources 目录下
  13. package_xml=mappers

generatorConfig.xml文件与mybatis的自动生成代码文件一样,全代码如下:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
  3. "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
  4. <generatorConfiguration>
  5. <!--classPathEntry:数据库的JDBC驱动,换成自己的驱动位置 可选 -->
  6. <!--<classPathEntry location="D:\generator_mybatis\mysql-connector-java-5.1.24-bin.jar" /> -->
  7. <!-- 一个数据库一个context -->
  8. <!--defaultModelType="flat" 大数据字段,不分表 -->
  9. <context id="MysqlTables" targetRuntime="MyBatis3" defaultModelType="flat">
  10. <property name="autoDelimitKeywords" value="true" />
  11. <property name="beginningDelimiter" value="`" />
  12. <property name="endingDelimiter" value="`" />
  13. <property name="javaFileEncoding" value="utf-8" />
  14. <plugin type="org.mybatis.generator.plugins.SerializablePlugin" />
  15. <plugin type="org.mybatis.generator.plugins.ToStringPlugin" />
  16. <!-- 注释 -->
  17. <commentGenerator >
  18. <property name="suppressAllComments" value="false"/><!-- 是否取消注释 -->
  19. <property name="suppressDate" value="true" /> <!-- 是否生成注释代时间戳-->
  20. </commentGenerator>
  21. <!-- jdbc连接 -->
  22. <jdbcConnection driverClass="${jdbc_driver}"
  23. connectionURL="${jdbc_url}"
  24. userId="${jdbc_user}"
  25. password="${jdbc_password}" />
  26. <!-- 类型转换 -->
  27. <javaTypeResolver>
  28. <!-- 是否使用bigDecimal, false可自动转化以下类型(Long, Integer, Short, etc.) -->
  29. <property name="forceBigDecimals" value="false"/>
  30. </javaTypeResolver>
  31. <!-- 生成实体类地址 -->
  32. <javaModelGenerator targetPackage="${modelPackage}" targetProject="${src_main_java}" >
  33. <property name="enableSubPackages" value="false"/>
  34. <property name="trimStrings" value="true"/>
  35. </javaModelGenerator>
  36. <!-- 生成map.xml文件 -->
  37. <sqlMapGenerator targetPackage="${sqlMapperPackage}" targetProject="${src_main_resources}" >
  38. <property name="enableSubPackages" value="false" />
  39. </sqlMapGenerator>
  40. <!-- 生成map.xml对应client,也就是接口dao -->
  41. <javaClientGenerator targetPackage="${mapperPackage}" targetProject="${src_main_java}" type="XMLMAPPER" >
  42. <property name="enableSubPackages" value="false" />
  43. </javaClientGenerator>
  44. <table tableName="t_user" enableCountByExample="false" enableDeleteByExample="false"
  45. enableSelectByExample="false"
  46. enableUpdateByExample="false" selectByExampleQueryId="true"/>
  47. </context>
  48. </generatorConfiguration>

二:使用mybatis插件

文件结构预览图:

在build.gradle文件中引入如下代码:

引入MybatisGenerator插件,定义插件的属性,用该插件来自动生成代码。

  1. plugins {
  2. id 'java'
  3. id "com.arenagod.gradle.MybatisGenerator" version "1.4"
  4. }
  5. configurations {
  6. mybatisGenerator
  7. }
  8. mybatisGenerator {
  9. verbose = true
  10. configFile = 'src/main/resources/mybatis-generator.xml'
  11. }
  12. dependencies {
  13. testCompile group: 'junit', name: 'junit', version: '4.12'
  14. compile group: 'org.mybatis', name: 'mybatis', version: '3.5.1'
  15. mybatisGenerator 'org.mybatis.generator:mybatis-generator-core:1.3.7'
  16. mybatisGenerator 'tk.mybatis:mapper:4.0.3'
  17. mybatisGenerator 'mysql:mysql-connector-java:5.1.46'
  18. }

在插件定义configFile,指向mybatis-generator.xml文件位置,文件全代码如下:

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE generatorConfiguration PUBLIC
  3. "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
  4. "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" >
  5. <generatorConfiguration>
  6. <!-- 本地数据库驱动程序jar包的全路径 -->
  7. <!--<classPathEntry location="F:\repository\mysql\mysql-connector-java\5.1.44\mysql-connector-java-5.1.44.jar"/>-->
  8. <context id="context" targetRuntime="MyBatis3Simple">
  9. <!--java代码编码格式-->
  10. <property name="javaFileEncoding" value="UTF-8"/>
  11. <!--格式化java代码-->
  12. <property name="javaFormatter" value="org.mybatis.generator.api.dom.DefaultJavaFormatter"/>
  13. <!--格式化xml代码-->
  14. <property name="xmlFormatter" value="org.mybatis.generator.api.dom.DefaultXmlFormatter"/>
  15. <commentGenerator>
  16. <!-- 是否取消注释 -->
  17. <property name="suppressAllComments" value="true"/>
  18. <!-- 是否生成注释代时间戳-->
  19. <property name="suppressDate" value="true"/>
  20. </commentGenerator>
  21. <!-- 数据库的相关配置 -->
  22. <jdbcConnection driverClass="com.mysql.jdbc.Driver"
  23. connectionURL="jdbc:mysql://127.0.0.1:3306/test?useUnicode=true"
  24. userId="root"
  25. password="123456"/>
  26. <javaTypeResolver>
  27. <!-- 是否使用bigDecimal, false可自动转化以下类型(Long, Integer, Short, etc.) -->
  28. <property name="forceBigDecimals" value="false"/>
  29. </javaTypeResolver>
  30. <!-- 实体类生成的位置 -->
  31. <javaModelGenerator targetPackage="com.core" targetProject="src/main/java">
  32. <!-- enableSubPackages:是否让schema作为包的后缀 -->
  33. <property name="enableSubPackages" value="false"/>
  34. <!-- 从数据库返回的值被清理前后的空格 -->
  35. <property name="trimStrings" value="true"/>
  36. </javaModelGenerator>
  37. <!-- *Mapper.xml 文件的位置 -->
  38. <sqlMapGenerator targetPackage="mapping" targetProject="src/main/resources">
  39. <!-- enableSubPackages:是否让schema作为包的后缀 -->
  40. <property name="enableSubPackages" value="false"/>
  41. </sqlMapGenerator>
  42. <!-- Mapper 接口文件的位置,注意type的值这里是熟悉的xml格式 -->
  43. <!--
  44. type:选择怎么生成mapper接口(在MyBatis3/MyBatis3Simple下):
  45. 1,ANNOTATEDMAPPER:会生成使用Mapper接口+Annotation的方式创建(SQL生成在annotation中),不会生成对应的XML;
  46. 2,MIXEDMAPPER:使用混合配置,会生成Mapper接口,并适当添加合适的Annotation,但是XML会生成在XML中;
  47. 3,XMLMAPPER:会生成Mapper接口,接口完全依赖XML;
  48. 注意,如果context是MyBatis3Simple:只支持ANNOTATEDMAPPER和XMLMAPPER
  49. -->
  50. <javaClientGenerator targetPackage="com.core" targetProject="src/main/java" type="XMLMAPPER">
  51. <property name="enableSubPackages" value="false"/>
  52. </javaClientGenerator>
  53. <!-- 相关表的配置 -->
  54. <table tableName="t_user" enableCountByExample="false" enableDeleteByExample="false"
  55. enableSelectByExample="false"
  56. enableUpdateByExample="false" selectByExampleQueryId="true"/>
  57. </context>
  58. </generatorConfiguration>

在gradle-tasks下的other会生成一个mbGenerate任务,一键任务自动生成。

以上两种方法都实测可用,第二种方法比第一种方法代码量少,配置简单,推荐第二种方法。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/307500
推荐阅读
相关标签
  

闽ICP备14008679号