我是靠谱客的博主 神勇西装,最近开发中收集的这篇文章主要介绍gradle-generator自动生成代码的两种方式一:利用ant二:使用mybatis插件,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一:利用ant

文件结构预览图:

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

configurations{
    mybatisGenerator
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
    compile group: 'org.mybatis', name: 'mybatis', version: '3.5.1'
    
    mybatisGenerator 'org.mybatis.generator:mybatis-generator-core:1.3.7'
    mybatisGenerator 'tk.mybatis:mapper:4.0.3'
    mybatisGenerator 'mysql:mysql-connector-java:5.1.46'
}

apply from: "generator.gradle"

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

def getDbProperties = {
    def properties = new Properties()
    file("/src/main/resources/mybatisGenerator.properties").withInputStream { inputStream ->
        properties.load(inputStream)
    }
    properties
}

task mybatisGenerate <<  {
    def dbProperties = getDbProperties()
    ant.properties['targetProject'] = projectDir.path
    ant.properties['jdbc_driver'] = dbProperties.getProperty("jdbc_driver")
    ant.properties['jdbc_url'] = dbProperties.getProperty("jdbc_url")
    ant.properties['jdbc_user'] = dbProperties.getProperty("jdbc_user")
    ant.properties['jdbc_password'] = dbProperties.getProperty("jdbc_password")
    //ant.properties['src_main_java'] = sourceSets.main.java.srcDirs[0].path  
    ant.properties['src_main_java'] = dbProperties.getProperty("project")
    //ant.properties['src_main_resources'] = sourceSets.main.resources.srcDirs[0].path  
    ant.properties['src_main_resources'] = dbProperties.getProperty("resources")
    ant.properties['modelPackage'] = dbProperties.getProperty("package_model")
    ant.properties['mapperPackage'] = dbProperties.getProperty("package_mapper")
    ant.properties['sqlMapperPackage'] = dbProperties.getProperty("package_xml")

    ant.taskdef(
            name: 'mbgenerator',
            classname: 'org.mybatis.generator.ant.GeneratorAntTask',
            classpath: configurations.mybatisGenerator.asPath
    )

    ant.mbgenerator(overwrite: true,
            configfile: '..\generator\src\main\resources\generatorConfig.xml', verbose: true) {
        propertyset {
            propertyref(name: 'targetProject')
            propertyref(name: 'jdbc_user')
            propertyref(name: 'jdbc_driver')
            propertyref(name: 'jdbc_url')
            propertyref(name: 'jdbc_password')
            propertyref(name: 'src_main_java')
            propertyref(name: 'src_main_resources')
            propertyref(name: 'modelPackage')
            propertyref(name: 'mapperPackage')
            propertyref(name: 'sqlMapperPackage')
        }
    }
}  

generator.gradle代码分析:

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

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

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


 

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

#Mybatis Generator configuration
project =src/main/java
resources=src/main/resources

jdbc_driver=com.mysql.jdbc.Driver
jdbc_url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8
jdbc_user=root
jdbc_password=123456

# 生成实体类所在的包
package_model=com.core
# 生成 mapper 类所在的包
package_mapper=com.core
# 生成 mapper xml 文件所在的包,默认存储在 resources 目录下
package_xml=mappers

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

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
    <!--classPathEntry:数据库的JDBC驱动,换成自己的驱动位置 可选 -->
    <!--<classPathEntry location="D:generator_mybatismysql-connector-java-5.1.24-bin.jar" /> -->

    <!-- 一个数据库一个context -->
    <!--defaultModelType="flat" 大数据字段,不分表 -->
    <context id="MysqlTables" targetRuntime="MyBatis3" defaultModelType="flat">
        <property name="autoDelimitKeywords" value="true" />
        <property name="beginningDelimiter" value="`" />
        <property name="endingDelimiter" value="`" />
        <property name="javaFileEncoding" value="utf-8" />
        <plugin type="org.mybatis.generator.plugins.SerializablePlugin" />
        <plugin type="org.mybatis.generator.plugins.ToStringPlugin" />

        <!-- 注释 -->
        <commentGenerator >
            <property name="suppressAllComments" value="false"/><!-- 是否取消注释 -->
            <property name="suppressDate" value="true" /> <!-- 是否生成注释代时间戳-->
        </commentGenerator>

        <!-- jdbc连接 -->
        <jdbcConnection driverClass="${jdbc_driver}"
                        connectionURL="${jdbc_url}"
                        userId="${jdbc_user}"
                        password="${jdbc_password}" />
        <!-- 类型转换 -->
        <javaTypeResolver>
            <!-- 是否使用bigDecimal, false可自动转化以下类型(Long, Integer, Short, etc.) -->
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>

        <!-- 生成实体类地址 -->
        <javaModelGenerator targetPackage="${modelPackage}" targetProject="${src_main_java}" >
            <property name="enableSubPackages" value="false"/>
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>
        <!-- 生成map.xml文件 -->
        <sqlMapGenerator targetPackage="${sqlMapperPackage}" targetProject="${src_main_resources}" >
            <property name="enableSubPackages" value="false" />
        </sqlMapGenerator>
        <!-- 生成map.xml对应client,也就是接口dao -->
        <javaClientGenerator targetPackage="${mapperPackage}" targetProject="${src_main_java}" type="XMLMAPPER" >
            <property name="enableSubPackages" value="false" />
        </javaClientGenerator>

        <table tableName="t_user" enableCountByExample="false" enableDeleteByExample="false"
               enableSelectByExample="false"
               enableUpdateByExample="false" selectByExampleQueryId="true"/>
    </context>
</generatorConfiguration>

二:使用mybatis插件

文件结构预览图:

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

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

plugins {
    id 'java'
    id "com.arenagod.gradle.MybatisGenerator" version "1.4"

}

configurations {
    mybatisGenerator
}
mybatisGenerator {
    verbose = true
    configFile = 'src/main/resources/mybatis-generator.xml'
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
    compile group: 'org.mybatis', name: 'mybatis', version: '3.5.1'

    mybatisGenerator 'org.mybatis.generator:mybatis-generator-core:1.3.7'
    mybatisGenerator 'tk.mybatis:mapper:4.0.3'
    mybatisGenerator 'mysql:mysql-connector-java:5.1.46'
}

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

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE generatorConfiguration PUBLIC
        "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" >
<generatorConfiguration>

    <!-- 本地数据库驱动程序jar包的全路径 -->
    <!--<classPathEntry location="F:repositorymysqlmysql-connector-java5.1.44mysql-connector-java-5.1.44.jar"/>-->

    <context id="context" targetRuntime="MyBatis3Simple">
        <!--java代码编码格式-->
        <property name="javaFileEncoding" value="UTF-8"/>
        <!--格式化java代码-->
        <property name="javaFormatter" value="org.mybatis.generator.api.dom.DefaultJavaFormatter"/>
        <!--格式化xml代码-->
        <property name="xmlFormatter" value="org.mybatis.generator.api.dom.DefaultXmlFormatter"/>

        <commentGenerator>
            <!-- 是否取消注释 -->
            <property name="suppressAllComments" value="true"/>
            <!-- 是否生成注释代时间戳-->
            <property name="suppressDate" value="true"/>
        </commentGenerator>

        <!-- 数据库的相关配置 -->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://127.0.0.1:3306/test?useUnicode=true"
                        userId="root"
                        password="123456"/>
        <javaTypeResolver>
            <!-- 是否使用bigDecimal, false可自动转化以下类型(Long, Integer, Short, etc.) -->
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>

        <!-- 实体类生成的位置 -->
        <javaModelGenerator targetPackage="com.core" targetProject="src/main/java">
            <!-- enableSubPackages:是否让schema作为包的后缀 -->
            <property name="enableSubPackages" value="false"/>
            <!-- 从数据库返回的值被清理前后的空格 -->
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>

        <!-- *Mapper.xml 文件的位置 -->
        <sqlMapGenerator targetPackage="mapping" targetProject="src/main/resources">
            <!-- enableSubPackages:是否让schema作为包的后缀 -->
            <property name="enableSubPackages" value="false"/>
        </sqlMapGenerator>

        <!-- Mapper 接口文件的位置,注意type的值这里是熟悉的xml格式 -->
        <!--
         type:选择怎么生成mapper接口(在MyBatis3/MyBatis3Simple下):
                1,ANNOTATEDMAPPER:会生成使用Mapper接口+Annotation的方式创建(SQL生成在annotation中),不会生成对应的XML;
                2,MIXEDMAPPER:使用混合配置,会生成Mapper接口,并适当添加合适的Annotation,但是XML会生成在XML中;
                3,XMLMAPPER:会生成Mapper接口,接口完全依赖XML;
            注意,如果context是MyBatis3Simple:只支持ANNOTATEDMAPPER和XMLMAPPER
        -->
        <javaClientGenerator targetPackage="com.core" targetProject="src/main/java" type="XMLMAPPER">
            <property name="enableSubPackages" value="false"/>
        </javaClientGenerator>

        <!-- 相关表的配置 -->
        <table tableName="t_user" enableCountByExample="false" enableDeleteByExample="false"
               enableSelectByExample="false"
               enableUpdateByExample="false" selectByExampleQueryId="true"/>
    </context>
</generatorConfiguration>

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

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

最后

以上就是神勇西装为你收集整理的gradle-generator自动生成代码的两种方式一:利用ant二:使用mybatis插件的全部内容,希望文章能够帮你解决gradle-generator自动生成代码的两种方式一:利用ant二:使用mybatis插件所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部