gradle之MyBatis Generator生成model,mapper及mapper.xml

Mybatis Generator(http://mybatis.org/generator/index.html) 是一个Mybatis的代码生成器,它可以帮助我们根据数据库中表的设计生成对应的model,dao,xml文件及简单的crud sql。Mybatis Generator提供了maven plugin,ant targetjava三种方式启动。现在主流的构建工具是gradle和maven,虽然mybatis generator没有提供gradle的插件,但gradle可以调用ant任务,因此,gradle也能启动Mybatis Generator。下面我们介绍gradl中使用Mybatis Generator


一.环境准备

  1. 创建数据库user和表user_test,user_info
CREATE TABLE `user_test` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_name` varchar(255) NOT NULL,
  `pass_world` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
------------------------------------------------------------------------
CREATE TABLE `user_info` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  `address` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户信息表';
  1. 创建配置文件
  • jdbc.properties 数据库连接文件
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///user?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull
jdbc.username=root
jdbc.password=123
  • gradle.properties 生成model,mapper,xml路径配置文件
#生成的实体路径
modelPackage=com.bean
# mapper路径
mapperPackage=com.mapper
#mapper.xml路径
sqlMapperPackage=com.mapper
  • generatorConfig.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>
    <context id="Mysql" targetRuntime="MyBatis3Simple" defaultModelType="flat">
        <plugin type="tk.mybatis.mapper.generator.MapperPlugin">
            <property name="mappers" value="tk.mybatis.mapper.common.Mapper"/>
            <!-- caseSensitive默认false,当数据库表名区分大小写时,可以将该属性设置为true -->
            <property name="caseSensitive" value="true"/>
        </plugin>
        <commentGenerator>
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>
        <jdbcConnection driverClass="${driverClass}"
                        connectionURL="${connectionURL}"
                        userId="${userId}"
                        password="${password}">
        </jdbcConnection>
        <javaModelGenerator targetPackage="${modelPackage}" targetProject="${src_main_java}"/>
        <sqlMapGenerator targetPackage="${sqlMapperPackage}" targetProject="${src_main_resources}"/>
        <javaClientGenerator targetPackage="${mapperPackage}" targetProject="${src_main_java}" type="XMLMAPPER"/>
        <!-- sql占位符,表示所有的表 -->
        <table tableName="%">
            <generatedKey column="epa_id" sqlStatement="Mysql" identity="true" />
        </table>
    </context>
</generatorConfiguration>

这里面用了通用mapper组件如果不想用,就将上述文件中下面的注释

<plugin type="tk.mybatis.mapper.generator.MapperPlugin">
            <property name="mappers" value="tk.mybatis.mapper.common.Mapper"/>
            <!-- caseSensitive默认false,当数据库表名区分大小写时,可以将该属性设置为true -->
          <property name="caseSensitive" value="true"/>
</plugin>
  • build.gradle ssm配置和myabtis生成器配置
group 'com'
version '1.0-SNAPSHOT'

apply plugin: 'java'
apply plugin: 'war'

sourceCompatibility = 1.8

repositories {
    maven{
        url "http://maven.aliyun.com/nexus/content/repositories/central/"
    }
}

configurations {
    mybatisGenerator
}

dependencies {

    //junit 单元测试
    testCompile group: 'junit', name: 'junit', version: '4.11'
    //sping
    compile group: 'org.springframework', name: 'spring-core', version: '4.3.6.RELEASE'
    compile group: 'org.springframework', name: 'spring-context', version: '4.3.6.RELEASE'
    compile group: 'org.springframework', name: 'spring-beans', version: '4.3.6.RELEASE'
    compile group: 'org.springframework', name: 'spring-expression', version: '4.3.6.RELEASE'

    compile group: 'org.springframework', name: 'spring-context-support', version: '4.3.6.RELEASE'
    compile group: 'org.springframework', name: 'spring-web', version: '4.3.6.RELEASE'
    compile group: 'org.springframework', name: 'spring-webmvc', version: '4.3.6.RELEASE'

    compile group: 'org.springframework', name: 'spring-jdbc', version: '4.3.6.RELEASE'
    compile group: 'org.springframework', name: 'spring-aop', version: '4.3.6.RELEASE'
    compile group: 'org.springframework', name: 'spring-tx', version: '4.3.6.RELEASE'
    compile group: 'org.springframework', name: 'spring-orm', version: '4.3.6.RELEASE'
    compile group: 'org.springframework', name: 'spring-test', version: '4.3.6.RELEASE'
    compile group: 'org.springframework', name: 'spring-aspects', version: '4.3.6.RELEASE'

//  spring依赖日志包
    compile group: 'commons-logging', name: 'commons-logging', version: '1.2'

//  string 增强
    compile group: 'org.apache.commons', name: 'commons-lang3', version: '3.4'
//  集合增强
    compile group: 'commons-collections', name: 'commons-collections', version: '3.2.1'
//上传组件
    compile group: 'commons-io', name: 'commons-io', version: '2.4'
    compile group: 'commons-fileupload', name: 'commons-fileupload', version: '1.3.1'
    compile group: 'commons-codec', name: 'commons-codec', version: '1.10'
//mybatis及依赖包
    compile group: 'org.mybatis', name: 'mybatis', version: '3.4.2'
//spring 整合 mybatis
    compile group: 'org.mybatis', name: 'mybatis-spring', version: '1.3.0'
//dbcp 连接池配置数据库
    compile group: 'commons-dbcp', name: 'commons-dbcp', version: '1.4'
//jsp相关
    compile group: 'jstl', name: 'jstl', version: '1.2'
//JavaEE servlet
    compile group: 'javax', name: 'javaee-api', version: '7.0'

//日志
    compile group: 'log4j', name: 'log4j', version: '1.2.17'
    compile group: 'org.slf4j', name: 'slf4j-api', version: '1.7.24'
    compile group: 'org.slf4j', name: 'slf4j-log4j12', version: '1.7.24'
//gson
    compile group: 'com.google.code.gson', name: 'gson', version: '2.7'
//fastjson
    compile group: 'com.alibaba', name: 'fastjson', version: '1.2.33'
//shiro
    compile group: 'org.apache.shiro', name: 'shiro-core', version: '1.3.2'
    compile group: 'org.apache.shiro', name: 'shiro-web', version: '1.3.2'
    compile group: 'org.apache.shiro', name: 'shiro-spring', version: '1.3.2'
    compile group: 'org.apache.shiro', name: 'shiro-ehcache', version: '1.3.2'
//通用mapper
    compile group: 'tk.mybatis', name: 'mapper', version: '3.4.2'

//生成器依赖
    mybatisGenerator 'org.mybatis.generator:mybatis-generator-core:1.3.2'
    mybatisGenerator 'mysql:mysql-connector-java:5.1.36'
    mybatisGenerator 'tk.mybatis:mapper:3.4.2'
}
//添加 ant 任务
def getDbProperties = {
    def dDProperties = new Properties()
    file("src/main/resources/jdbc.properties").withInputStream { inputStream ->
        dDProperties.load(inputStream)
    }
    dDProperties;
}
def getGradleProperties = {
    def gradleProperties = new Properties()
    file("src/main/resources/gradle.properties").withInputStream { inputStream ->
        gradleProperties.load(inputStream)
    }
    gradleProperties;
}
task mybatisGenerate << {
    def dDProperties = getDbProperties()
    def gradleProperties = getGradleProperties()
    ant.properties['targetProject'] = projectDir.path
    ant.properties['driverClass'] = dDProperties.getProperty("jdbc.driver")
    ant.properties['connectionURL'] = dDProperties.getProperty("jdbc.url")
    ant.properties['userId'] = dDProperties.getProperty("jdbc.username")
    ant.properties['password'] = dDProperties.getProperty("jdbc.password")
    ant.properties['src_main_java'] = sourceSets.main.java.srcDirs[0].path
    ant.properties['src_main_resources'] = sourceSets.main.resources.srcDirs[0].path
    ant.properties['modelPackage'] = gradleProperties.getProperty("modelPackage")
    ant.properties['mapperPackage'] =  gradleProperties.getProperty("mapperPackage")
    ant.properties['sqlMapperPackage'] =  gradleProperties.getProperty("sqlMapperPackage")
    ant.taskdef(
            name: 'mbgenerator',
            classname: 'org.mybatis.generator.ant.GeneratorAntTask',
            classpath: configurations.mybatisGenerator.asPath
    )
    ant.mbgenerator(overwrite: true,
            configfile: 'src/main/resources/generatorConfig.xml', verbose: true) {
        propertyset {
            propertyref(name: 'targetProject')
            propertyref(name: 'userId')
            propertyref(name: 'driverClass')
            propertyref(name: 'connectionURL')
            propertyref(name: 'password')
            propertyref(name: 'src_main_java')
            propertyref(name: 'src_main_resources')
            propertyref(name: 'modelPackage')
            propertyref(name: 'mapperPackage')
            propertyref(name: 'sqlMapperPackage')
        }
    }
}

二. 运行,生成文件到指定目录

image.png

三.生成指定的表

在这里我指定生成user_info 这张表

  • 在gradle.properties 加入指定生成表名和对应生成的className名称


    image.png
#生成指定表
tableName = user_info
#生成指定表对应的className
domainObjectName = UserInfo
  • 在build.gradle文件中加入刚刚的配置


    image.png
  • 更改generatorConfig.xml 将默认生成所有表改成指定表,此文件中表变量值取的是build.gradle文件中task中的变量,请保持一致。

    image.png

    至此完结,点击运行,大功告成
    demo地址 https://github.com/lmandy/Gradle-MybatisGenerator

  • 注意:如果在generator.xml中没有使用 通用mapper 组件
    那么在配置dao接口扫描时下面改成对应的扫描器


    image.png

四.引用

(generatorConfig.xml配置文件详解)
https://www.jianshu.com/p/e09d2370b796
https://www.jianshu.com/p/5c85becf5f73

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容