在 Gradle 中使用 MyBatis Generator

在 Intellij IDEA 中结合 Gradle 使用 MyBatis Generator 逆向生成代码

  • Info:
  • JDK 1.8
  • Gradle 2.14
  • Intellij IDEA 2016.3

由于 IDEA 的教程较少,且 MyBatis Generator 不支持 Gradle 直接运行,因此这次是在自己折腾项目过程中,根据一些参考资料加上自己的实践得出的结论,并附上相应的 Demo 可供自己未来参考,也与大家分享。

本文的 Demo 也可以当作工具直接导入 IDEA,加上自己的数据库信息即可生成代码。

创建项目

详细的创建步骤可以参考使用 Gradle 构建 Struts 2 Web 应用中「新建 Gradle Web 项目」一节即可。当创建完毕,需要等待 Gradle 联网构建,由于国内网络因素,可能需要稍作等待。当构建完成,目录结构应如下图一致:

配置依赖

这里需要使用 MyBatis Generator,MySQL 驱动,以及 MyBatis Mapper。由于代码生成单独运行即可,不需要参与到整个项目的编译,因此在 build.gradle 中添加配置:

configurations {
    mybatisGenerator
}

依赖的版本并不是局限于某个特定版本,可以选择适时相应的更新版本。添加到 build.gradle 的 dependencies 中(注意前面需将「compile group:」改为 「mybatisGenerator」):

dependencies {
    testCompile <span class="hljs-string">group: <span class="hljs-string">'junit', <span class="hljs-string">name: <span class="hljs-string">'junit', <span class="hljs-string">version: <span class="hljs-string">'4.11'

    mybatisGenerator <span class="hljs-string">'org.mybatis.generator:mybatis-generator-core:1.3.5'
    mybatisGenerator <span class="hljs-string">'mysql:mysql-connector-java:5.1.40'
    mybatisGenerator <span class="hljs-string">'tk.mybatis:mapper:3.3.9'
}
</span></span></span></span></span></span></span></span></span>

设置数据库信息

在 config.properties 中配置数据库和要生成的 Java 类的包:

设置生成代码的配置文件

在 generatorConfig.xml 中配置数据库表信息,可以参考官方的文档(附在文末)来进行配置:

Gradle 设置 Ant Task

由于 MyBatis Generator 尚不支持 Gradle,所以只能使用 Gradle 来执行 Ant Task,达到相同的效果。

build.gradle:

<span class="hljs-keyword">def getDbProperties = {
    <span class="hljs-keyword">def properties = <span class="hljs-keyword">new Properties()
    file(<span class="hljs-string">"src/main/resources/mybatis/jdbc.properties").withInputStream { inputStream ->
        properties.load(inputStream)
    }
    properties
}

task mybatisGenerate << {
    <span class="hljs-keyword">def properties = getDbProperties()
    ant.properties[<span class="hljs-string">'targetProject'] = projectDir.path
    ant.properties[<span class="hljs-string">'driverClass'] = properties.getProperty(<span class="hljs-string">"jdbc.driverClassName")
    ant.properties[<span class="hljs-string">'connectionURL'] = properties.getProperty(<span class="hljs-string">"jdbc.url")
    ant.properties[<span class="hljs-string">'userId'] = properties.getProperty(<span class="hljs-string">"jdbc.username")
    ant.properties[<span class="hljs-string">'password'] = properties.getProperty(<span class="hljs-string">"jdbc.password")
    ant.properties[<span class="hljs-string">'src_main_java'] = sourceSets.main.java.srcDirs[<span class="hljs-number">0].path
    ant.properties[<span class="hljs-string">'src_main_resources'] = sourceSets.main.resources.srcDirs[<span class="hljs-number">0].path
    ant.properties[<span class="hljs-string">'modelPackage'] = properties.getProperty(<span class="hljs-string">"package.model")
    ant.properties[<span class="hljs-string">'mapperPackage'] = properties.getProperty(<span class="hljs-string">"package.mapper")
    ant.properties[<span class="hljs-string">'sqlMapperPackage'] = properties.getProperty(<span class="hljs-string">"package.xml")
    ant.taskdef(
<span class="hljs-symbol">            name: <span class="hljs-string">'mbgenerator',
<span class="hljs-symbol">            classname: <span class="hljs-string">'org.mybatis.generator.ant.GeneratorAntTask',
<span class="hljs-symbol">            classpath: configurations.mybatisGenerator.asPath
    )
    ant.mbgenerator(<span class="hljs-string">overwrite: <span class="hljs-literal">true,
<span class="hljs-symbol">            configfile: <span class="hljs-string">'src/main/resources/mybatis/generatorConfig.xml', <span class="hljs-string">verbose: <span class="hljs-literal">true) {
        propertyset {
            propertyref(<span class="hljs-string">name: <span class="hljs-string">'targetProject')
            propertyref(<span class="hljs-string">name: <span class="hljs-string">'userId')
            propertyref(<span class="hljs-string">name: <span class="hljs-string">'driverClass')
            propertyref(<span class="hljs-string">name: <span class="hljs-string">'connectionURL')
            propertyref(<span class="hljs-string">name: <span class="hljs-string">'password')
            propertyref(<span class="hljs-string">name: <span class="hljs-string">'src_main_java')
            propertyref(<span class="hljs-string">name: <span class="hljs-string">'src_main_resources')
            propertyref(<span class="hljs-string">name: <span class="hljs-string">'modelPackage')
            propertyref(<span class="hljs-string">name: <span class="hljs-string">'mapperPackage')
            propertyref(<span class="hljs-string">name: <span class="hljs-string">'sqlMapperPackage')
        }
    }
}
</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>

配置好 build.gradle,就可以在 IDEA 的 Gradle 菜单中找到新的 Task:

如果这里没有,可能是 Gradle 没有 build,重新刷新即可:

双击「mybatisGenerate」即可运行,如果配置正确即可运行成功:

注:这里我在 generatorConfig.xml 配置选择的是按注解映射,因此没有 xml 文件生成。

参考资料

Original: https://www.cnblogs.com/xiaofengfeng/p/9200631.html
Author: 小锋神
Title: 在 Gradle 中使用 MyBatis Generator

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/544293/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 吴军-《阅读与写作讲义》读书笔记

    背景 读这本书是因为有位同事在公司群里推荐这本书,同时有时候发现自己在想表达某件事情的时候,会出现词不达意,表述不清的尴尬局面,自己这方面的能力需要提高。 全书思维导图 读书笔记 …

    Java 2023年6月5日
    095
  • Centos7安装Docker

    0.安装Docker Docker 分为 CE 和 EE 两大版本。CE 即社区版(免费,支持周期 7 个月),EE 即企业版,强调安全,付费使用,支持周期 24 个月。 Dock…

    Java 2023年6月13日
    079
  • Okhttp3 网络请求框架与 Gson

    <span class="hljs-params"><dependency> <span class="hljs-par…

    Java 2023年6月9日
    079
  • mybatis if else if 条件判断SQL片段表达式取值和拼接

    前言 最近在开发项目的时候涉及到复杂的动态条件查询,但是 mybaits本身不支持i f elseif类似的判断但是我们可以间接通过 chose when otherwise 去实…

    Java 2023年6月13日
    088
  • linux中find命令的摘要

    find命令的使用 按照时间查找 可以很方便按照时间查找文件 find -[mtime|atime|ctime] n #查找n天前当天[修改|访问|创建]的文件 find -[mt…

    Java 2023年6月7日
    089
  • Spring系列8:bean的作用域

    本文内容 bean定义信息的意义 介绍6种bean的作用域 bean定义信息的意义 Spring中区分下类、类定义信息,类实例对象的概念?不容易理解,以餐馆中点炒饭为例。 类: 相…

    Java 2023年6月5日
    079
  • 循环结构(Java)

    基本介绍 while循环语法 while(&#x5E03;&#x5C14;&#x8868;&#x8FBE;&#x5F0F;){&#x…

    Java 2023年6月9日
    066
  • 1.1 SQL答案

    第一题 用聚合函数,分组可查出 select * FROM student GROUP BY name HAVING MIN(fenshu>=80) 用子查询先查出分数小于8…

    Java 2023年6月9日
    072
  • Java 快速开发几 MB 独立 EXE,写图形界面很方便

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Java 2023年6月16日
    078
  • (解决)IntelliJ IDEA 中 Error:java: 无效的源发行版: 9

    (解决)IntelliJ IDEA 中 Error:java: 无效的源发行版: 9 (解决)IntelliJ IDEA 中 Error:java: 无效的源发行版: 9 &#82…

    Java 2023年6月9日
    096
  • 并发编程之:ForkJoin

    大家好,我是小黑,一个在互联网苟且偷生的农民工。 在JDK1.7中引入了一种新的Fork/Join线程池,它可以将一个大的任务拆分成多个小的任务并行执行并汇总执行结果。Fork/J…

    Java 2023年6月7日
    088
  • 通过Frame做的加法计算器更好的理解内部类的使用

    随笔记录一下,周六补了补awt和swing的知识,兴趣使然,毕竟这些技术现在很少有用的了。跟着视频做的,目的不是为了画出多好看的窗口,而是为了更好的理解面向对象编程。为自己更好的编…

    Java 2023年6月5日
    081
  • zookeeper篇-watch命令

    点赞再看,养成习惯,微信搜索「 小大白日志」关注这个搬砖人。 文章不定期同步公众号,还有各种一线大厂面试原题、我的学习系列笔记。 每个路径节点都有一个watcher监控,当该节点数…

    Java 2023年6月8日
    094
  • 二叉树的基本知识

    二叉树的四种遍历方式 不要较真,其实也可以分为两种:广度优先(层级)和深度优先(前序、中序、后序) 基本概念不再赘述。 复杂度:设二叉树中元素数目为n。这四种遍历算法的空间复杂性均…

    Java 2023年6月8日
    092
  • Guava中这些Map的骚操作,让我的代码量减少了50%

    原创:微信公众号 &#x7801;&#x519C;&#x53C2;&#x4E0A;,欢迎分享,转载请保留出处。 Guava是google公司开发的一…

    Java 2023年6月5日
    077
  • 源码中的设计模式–装饰器模式

    一、模式入场 有一句很经典的小品台词是”换个马甲我就不认识你了吗”,哈哈,这个比方正好用在今天要分享的装饰器模式上。先看下《head first 设计模式》…

    Java 2023年6月9日
    077
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球