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配置如下:

   




    
    

    
    
    
        
        
        
        
        

        

        
        
            
             
        

        
        
        
        
            
            
        

        
        
            
            
        
        
        
            
        
        
        
            
        
        
            
        

 

    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
gradle使用mybatis-generator生成user表相关文件只生成mysql..user的原因说明_第1张图片
 通过运行该mybatisGenerate的task就会生成相关的代码了。

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

 

  • gradle使用mybatis-generator生成user表相关文件只生成mysql..user的原因说明_第2张图片
  • 大小: 36.4 KB
  • 查看图片附件

你可能感兴趣的:(mysql..user,gradle)