Gradle + springboot+ mysql + mybatisGenerate

535 阅读1分钟

安装mysql

安装mysql,在mysql8.0中有强密码和原始密码两种安装选择,此处选择的是原始密码(强密码访问失败了- -)

build.gradle配置

引入依赖

// MySQL支持
implementation 'mysql:mysql-connector-java'

// Mybatis支持
implementation "org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.2"

// Mybatis TK支持
implementation 'tk.mybatis:mapper-spring-boot-starter:2.1.2'

// MyBatis Generator支持
mybatisGenerator 'org.mybatis.generator:mybatis-generator-core:1.3.5'
mybatisGenerator 'mysql:mysql-connector-java'
mybatisGenerator 'tk.mybatis:mapper:3.4.0'

编写mybatisGenerate配置

configurations {
    mybatisGenerator
}

// Mybatis Generator配置,注意配置文件固定为 application-dev.properties
task mybatisGenerate  {
    doLast {
        def prop = new Properties()

        file("src/main/resources/application-dev.properties").withInputStream { prop.load(it) }
        println prop.getProperty("spring.application.name")

        ant.properties['targetProject'] = projectDir.path
        ant.properties['driverClass'] = prop.getProperty('spring.datasource.driver-class-name')
        ant.properties['connectionURL'] = prop.getProperty('spring.datasource.url')
        ant.properties['userId'] = prop.getProperty('spring.datasource.username')
        ant.properties['password'] = prop.getProperty('spring.datasource.password')
        ant.properties['catalogName'] = prop.getProperty('spring.datasource.catalog')
        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'] = prop.getProperty('modelPackage')
        ant.properties['mapperPackage'] = prop.getProperty('mapperPackage')
        ant.properties['sqlMapperPackage'] = prop.getProperty('sqlMapperPackage')
        ant.taskdef(
                name: 'mbgenerator',
                classname: 'org.mybatis.generator.ant.GeneratorAntTask',
                classpath: configurations.mybatisGenerator.asPath
        )
        ant.mbgenerator(overwrite: true,
                configfile: 'db/generatorConfig.xml', verbose: true) {
            propertyset {
                propertyref(name: 'targetProject')
                propertyref(name: 'userId')
                propertyref(name: 'driverClass')
                propertyref(name: 'connectionURL')
                propertyref(name: 'password')
                propertyref(name: 'catalogName')
                propertyref(name: 'src_main_java')
                propertyref(name: 'src_main_resources')
                propertyref(name: 'modelPackage')
                propertyref(name: 'mapperPackage')
                propertyref(name: 'sqlMapperPackage')

            }
        }
    }
}

根据build.gradle中的配置,编写项目配置文件及创建文件夹

mysql

# mysql
spring.datasource.url=jdbc:mysql://localhost:3306/practice?characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false
spring.datasource.username=root
spring.datasource.password=12345678
spring.datasource.catalog=practice

mybatis

# mybatis
mybatis.type-aliases-package=com.kieran.practice.model
# 对象关系映射文件
mybatis.mapper-locations=classpath:mybatis_mapper/*.xml

mybatis Generator

# mybatis Generator
# model存放位置
modelPackage=com.kieran.practice.model
# mapper存放位置
mapperPackage=com.kieran.practice.mapper
# 对象关系映射文件存放位置
sqlMapperPackage=mybatis_mapper

创建对应的文件夹

image.png`

v_1_m_user.sql

create table m_user(
           id              int(9) primary key auto_increment not null  comment '主键ID',
           nick_name       varchar(50)                       not null  comment '昵称',
           age             int(2)                            not null comment '年龄'
) ENGINE = InnoDB COMMENT '用户表' charset = utf8mb4;

generateConfig.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">
        <property name="javaFileEncoding" value="UTF-8"/>

        <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" />

        <!-- 用户表 -->
        <table catalog="${catalogName}" tableName="m_user" mapperName="UserMapper" domainObjectName="User">
            <generatedKey column="id" sqlStatement="Mysql" identity="true"/>
        </table>

    </context>
</generatorConfiguration>

在启动类上加上@MapperScan

image.png

配置完成,执行自动生成mysql映射文件的命令

  1. 切换到对应的module下
  2. 执行 gradle mybatisGenerate
  3. 如果gradle的版本不匹配,可以使用./gradlew mybatisGenerate,但是需要下载gradle wrapper的zip包

image.png

image.png

执行完成后,model、mapper、mybatis_mapper文件夹下,都会有新文件生成

image.png

注意 model文件中,需要删除一个点,只保留一个

image.png

image.png