`
357029540
  • 浏览: 734950 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

gradle使用mybatis-generator生成user表相关文件只生成mysql..user的原因说明

阅读更多

       在gradle中使用mybatis的生成代码类的时候,因为gradle不像maven那样直接支持生成工具,需要我们通过ant来手写task来运行,我这里使用的是mysql8数据库,先介绍下遇到的问题,在数据库的test schema里新建了一个表user,因为使用的是MySQL8,所以想当然的链接数据库的mysql-connector-java的版本使用了最新的8.0.11版本,因为有些时候会遇到MySQL8最新的密码问题(暂时忘记那个具体名称了),所以才有了这样的选择,悲剧的就是因为这个想当然的选择,在生成代码的时候都一直没有生成test schema中的user信息,哪怕是在xml文件的table上添加了schema说明也没有生成想要的user信息,倒是生成了mysql 的user表信息,这个就让人相当郁闷啊,于是在网上找啊,查啊,所有文章都没有出现过这种问题,到底是怎么回事啊,回头看一下以前用maven写的代码生成器,好像也没有什么不同啊,不就是换了一个mysql-connector-java连接版本嘛,哟呵,刚才说什么,换了一个版本,赶紧的把版本换成5.1.46,一执行,我晕,成功了,看来版本不能随便换啊,留下这个做个纪念,下次就记住了。下面整理下gradle的mybatis-generator整合。

       1.在resources目录下新建一个mybatisgenerator文件夹,用于存放数据库连接的mybatisGeneratorinit.properties和生成代码文件配置的generatorConfig.xml文件:

 

      mybatisGeneratorinit.properties配置文件如下:

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

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

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

 

    注意:jdbc_url=jdbc:mysql://localhost:3306/saas_demo?useUnicode=true&characterEncoding=UTF-8这里中的jdbc_url多出了一个jdbc,需要删除。

 

    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>
    <!--classPathEntry:数据库的JDBC驱动,换成你自己的驱动位置 可选 -->
    <!--<classPathEntry location="D:\generator_mybatis\mysql-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>
        <!-- 生成mapxml文件 -->
        <sqlMapGenerator targetPackage="${sqlMapperPackage}" targetProject="${src_main_resources}" >
            <property name="enableSubPackages" value="false" />
        </sqlMapGenerator>
        <!-- 生成mapxml对应client,也就是接口dao -->
        <javaClientGenerator targetPackage="${mapperPackage}" targetProject="${src_main_java}" type="XMLMAPPER" >
            <property name="enableSubPackages" value="false" />
        </javaClientGenerator>
        <table tableName="user" enableCountByExample="true" enableUpdateByExample="true" enableDeleteByExample="true" enableSelectByExample="true" selectByExampleQueryId="true">
            <property name="useActualColumnNames" value="false" />
            <generatedKey column="id" sqlStatement="Mysql" identity="true" />
        </table>
    </context>
</generatorConfiguration>

 

    2.在build.gradle在定义如下:

 

    2.1.首先定义一个configurations

 

configurations{
    mybatisGenerator
}

 

     2.2.在dependencies中定义mybatisGenerator专门依赖的jar,因为仅仅是生成工具需要,所以通过这种方式添加依赖,避免其他情况下使用

 

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'

 

 2.3.定义task相关

 

def getDbProperties = {
    def properties = new Properties()
    file("/src/main/resources/mybatisgenerator/mybatisGeneratorinit.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: '..\\saas-backend-demo\\src\\main\\resources\\mybatisgenerator\\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')
        }
    }
}

 

   定义好以上的时候,刷新gradle,你将会看见如下图的task

 通过运行该mybatisGenerate的task就会生成相关的代码了。

         这里参考了https://github.com/kingcos/MyBatisGenerator-Tool 的代码,谢谢提供的参考。

 

  • 大小: 36.4 KB
0
0
分享到:
评论

相关推荐

    mybatis-generator-1.3.5.zip

    Mybatis Generator是一个强大的工具,它能够自动化生成Mybatis的Mapper接口、XML配置文件以及实体类,极大地减轻了开发人员在使用Mybatis时手动编写映射文件的工作负担。这个工具的最新版本是1.3.5,它包含了一个...

    mybatis-generator-core

    而Mybatis Generator Core则是MyBatis的一个辅助工具,通过简单的配置,可以在数据库表结构发生变化时,自动更新相关的Java源代码。 首先,我们要了解如何配置Mybatis Generator Core。在项目中创建一个`...

    002 springboot整合mybatis-plus

    而MyBatis-Plus则是一个MyBatis的扩展工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。本文将深入探讨如何将MyBatis-Plus与Spring Boot进行整合,以及利用MyBatis-Plus的逆向生成功能来快速...

    mybatis-generator

    Mybatis Generator是一个强大的工具,它能够自动生成Mybatis的XML映射文件、Java实体类以及相关的getter和setter方法,极大地提高了开发效率。这个工具的主要目的是减少手动编写这些重复性工作,使得开发者可以更加...

    mybatis_generator的工具包

    MyBatis Generator(MBG)是一个强大的Java代码生成器,它可以自动为MyBatis框架生成SQL映射文件、Mapper接口和对应的实体类。这个工具包极大地提高了开发效率,避免了手动编写这些重复性的代码,使得开发者能更专注...

    Mybatis Genterator自动生成

    Mybatis Generator是一款强大的Java代码生成工具,它能够帮助开发者自动生成Mybatis框架所需的实体类(Entity)、数据访问对象(DAO)、映射器接口(Mapper)以及XML配置文件,极大地提高了开发效率,减轻了手动编写...

    mybatis-generator-demo:mybatis逆向工程实践

    MyBatis Generator(MBG)是一个实用工具,它可以在Java项目中自动生成MyBatis的SQL映射文件、DAO接口和实现类,以及实体类。这个工具极大地减少了手动编写这些重复性代码的工作量,使开发者能更专注于业务逻辑。本...

    Mybatis Generator自动生成对应文件的实现方法

    Mybatis Generator是一种用于自动生成Mybatis框架下相关文件的工具,它能够根据数据库表结构生成对应的Mapper接口、Mapper XML文件以及Model对象,这样可以大大减轻手动编写这些文件的工作量。下面详细介绍使用...

    simple_myBatis3Simple.zip

    运行逆向工程命令后,MyBatis会根据配置文件中的设置自动生成相关文件。在`simple_myBatis3Simple`压缩包中,可能包含了这些自动生成的文件,包括但不限于: 1. 实体类(Entity):表示数据库中的表,如User.java,...

    mybatisGeneratorTest.zip

    本篇文章将深入探讨MyBatis Generator Test的相关知识,包括其基本概念、配置、使用方法以及常见问题解决。 1. **MyBatis Generator简介** MyBatis Generator(MBG)是MyBatis框架的一个扩展,它可以自动根据...

    MybatisPlus使用代码生成器遇到的小问题(推荐)

    在使用MybatisPlus的过程中,代码生成器是一个非常实用的工具,能够自动化地创建实体类、Mapper接口、XML映射文件以及Service接口和服务实现类等,极大地提高了开发效率。然而,在实际使用时,可能会遇到一些小问题...

    自动生成entity mapper工具包

    **MyBatis Generator** 是一个能够根据数据库表结构自动生成Java代码的工具,它可以生成`entity`类、`mapper`接口以及`mapper.xml`文件。MBG的核心在于其配置文件,开发者可以在这里定义生成代码的模板、数据库连接...

    生成实体类

    MyBatis也有一款叫做MyBatis Generator的工具,可以生成Java POJOs(Plain Old Java Objects),Mapper接口和XML配置文件。 3. **配置信息** 在项目中,我们需要在配置文件中提供数据库连接信息,包括数据库地址...

    java将数据库表反射成java实体类xml中sql语句

    在Java开发中,数据库表与Java实体类的映射是一个常见的需求,特别是在使用ORM(对象关系映射)框架如MyBatis时。本主题聚焦于如何利用Java将数据库表自动反射为Java实体类,并自动生成对应的XML配置文件中的SQL操作...

Global site tag (gtag.js) - Google Analytics