在 Intellij IDEA 中结合 Gradle 使用 MyBatis Generator 逆向生成代码html
因为 IDEA 的教程较少,且 MyBatis Generator 不支持 Gradle 直接运行,所以此次是在本身折腾项目过程当中,根据一些参考资料加上本身的实践得出的结论,并附上相应的 Demo 可供本身将来参考,也与你们分享。java
本文的 Demo 也能够看成工具直接导入 IDEA,加上本身的数据库信息便可生成代码。mysql
详细的建立步骤能够参考使用 Gradle 构建 Struts 2 Web 应用中「新建 Gradle Web 项目」一节便可。当建立完毕,须要等待 Gradle 联网构建,因为国内网络因素,可能须要稍做等待。当构建完成,目录结构应以下图一致:git
这里须要使用 MyBatis Generator,MySQL 驱动,以及 MyBatis Mapper。因为代码生成单独运行便可,不须要参与到整个项目的编译,所以在 build.gradle 中添加配置:github
configurations { mybatisGenerator }
在 Maven Repository (http://mvnrepository.com/) 分别搜索依赖:sql
依赖的版本并非局限于某个特定版本,能够选择适时相应的更新版本。添加到 build.gradle 的 dependencies 中(注意前面需将「compile group:」改成 「mybatisGenerator」):数据库
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.11' mybatisGenerator 'org.mybatis.generator:mybatis-generator-core:1.3.5' mybatisGenerator 'mysql:mysql-connector-java:5.1.40' mybatisGenerator 'tk.mybatis:mapper:3.3.9' }
在 resources 下,新建 mybatis 文件夹,并新建 config.properties 和 generatorConfig.xml,文件结构以下:网络
在 config.properties 中配置数据库和要生成的 Java 类的包:mybatis
# JDBC 驱动类名 jdbc.driverClassName=com.mysql.jdbc.Driver # JDBC URL: jdbc:mysql:// + 数据库主机地址 + 端口号 + 数据库名 jdbc.url=jdbc:mysql:// # JDBC 用户名及密码 jdbc.username= jdbc.password= # 生成实体类所在的包 package.model=com.maimieng.model # 生成 mapper 类所在的包 package.mapper=com.maimieng.mapper # 生成 mapper xml 文件所在的包,默认存储在 resources 目录下 package.xml=mybatis
在 generatorConfig.xml 中配置数据库表信息,能够参考官方的文档(附在文末)来进行配置:app
<?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"> <commentGenerator> <property name="suppressAllComments" value="true"></property> <property name="suppressDate" value="true"></property> <property name="javaFileEncoding" value="utf-8"/> </commentGenerator> <jdbcConnection driverClass="${driverClass}" connectionURL="${connectionURL}" userId="${userId}" password="${password}"> </jdbcConnection> <javaTypeResolver> <property name="forceBigDecimals" value="false"/> </javaTypeResolver> <javaModelGenerator targetPackage="${modelPackage}" targetProject="${src_main_java}"> <property name="enableSubPackages" value="true"></property> <property name="trimStrings" value="true"></property> </javaModelGenerator> <sqlMapGenerator targetPackage="${sqlMapperPackage}" targetProject="${src_main_resources}"> <property name="enableSubPackages" value="true"></property> </sqlMapGenerator> <javaClientGenerator targetPackage="${mapperPackage}" targetProject="${src_main_java}" type="ANNOTATEDMAPPER"> <property name="enableSubPackages" value="true"/> </javaClientGenerator> <!-- sql占位符,表示全部的表 --> <table tableName="%"> <generatedKey column="epa_id" sqlStatement="Mysql" identity="true" /> </table> </context> </generatorConfiguration>
因为 MyBatis Generator 尚不支持 Gradle,因此只能使用 Gradle 来执行 Ant Task,达到相同的效果。
build.gradle:
def getDbProperties = { def properties = new Properties() file("src/main/resources/mybatis/jdbc.properties").withInputStream { inputStream -> properties.load(inputStream) } properties } task mybatisGenerate << { def properties = getDbProperties() ant.properties['targetProject'] = projectDir.path ant.properties['driverClass'] = properties.getProperty("jdbc.driverClassName") ant.properties['connectionURL'] = properties.getProperty("jdbc.url") ant.properties['userId'] = properties.getProperty("jdbc.username") ant.properties['password'] = properties.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'] = properties.getProperty("package.model") ant.properties['mapperPackage'] = properties.getProperty("package.mapper") ant.properties['sqlMapperPackage'] = properties.getProperty("package.xml") ant.taskdef( name: 'mbgenerator', classname: 'org.mybatis.generator.ant.GeneratorAntTask', classpath: configurations.mybatisGenerator.asPath ) ant.mbgenerator(overwrite: true, configfile: 'src/main/resources/mybatis/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') } } }
配置好 build.gradle,就能够在 IDEA 的 Gradle 菜单中找到新的 Task:
若是这里没有,多是 Gradle 没有 build,从新刷新便可:
双击「mybatisGenerate」便可运行,若是配置正确便可运行成功:
注:这里我在 generatorConfig.xml 配置选择的是按注解映射,所以没有 xml 文件生成。
此次的 Demo 您能够在 https://github.com/kingcos/MyBatisGenerator-Tool 下载查看。Demo 自己也可做为工具来生成代码。因为目前正在完善一个 Android + Java Web 的小系统,所以将来可能还会更新 Spring Boot、Druid、Swagger 的配置脚手架。