欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

springboot集成mybatis-generator插件

程序员文章站 2022-05-26 10:19:03
...

1、包结构

springboot集成mybatis-generator插件

 

2、pom文件

2.1、定义properties

<properties>
		<mbg.version>1.3.6</mbg.version>
		<java.version>1.8</java.version>
		<!--  Java接口和实体类生成路径
          targetMapperPackage是生成的接口包名
          targetModelPackage是生成的实体类包名
          -->
		<targetJavaProject>${basedir}/src/main/java</targetJavaProject>
		<targetMapperPackage>com.asiainfo.group.springbootmybatisdemo.mapper</targetMapperPackage>
		<targetModelPackage>com.asiainfo.group.springbootmybatisdemo.entity</targetModelPackage>
		<!--  XML生成路径  -->
		<targetResourcesProject>${basedir}/src/main/resources</targetResourcesProject>
		<targetXMLPackage>mapper</targetXMLPackage>
	</properties>

 

2.2、依赖

<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>2.1.2</version>
		</dependency>

		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<scope>runtime</scope>
		</dependency>
		
	</dependencies>

 

2.3、插件

<build>
		<plugins>
			

			<!--mbg插件-->
			<plugin>
				<groupId>org.mybatis.generator</groupId>
				<artifactId>mybatis-generator-maven-plugin</artifactId>
				<version>${mbg.version}</version>
				<configuration>
					<!--  MBG配置文件路径  -->
					<configurationFile>${basedir}/src/main/resources/generatorConfig.xml</configurationFile>
					<verbose>true</verbose>
					<!-- 是否覆盖,true表示会替换生成的JAVA文件,false则不覆盖 -->
					<overwrite>true</overwrite>
				</configuration>
			</plugin>

		</plugins>
	</build>

 

3、核心配置文件application.yml

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/mybatis_study?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC
    username: root
    password: ok

mybatis:
  type-aliases-package: com.asiainfo.group.springbootmybatisdemo.entity
  mapper-locations: classpath:mapper/*Mapper.xml

#开启sql日志
logging:
  level:
    com.asiainfo.group.springbootmybatisdemo.mapper: DEBUG

 

4、jdbc.properties(供generatorConfig.xml引用)

jdbc.driver-class-name: com.mysql.cj.jdbc.Driver
jdbc.url: jdbc:mysql://localhost:3306/mybatis_study?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC
jdbc.username: root
jdbc.password: ok
jdbc.location=D:/dev/maven/repo/mysql/mysql-connector-java/8.0.20/mysql-connector-java-8.0.20.jar

 

5、mybatis-generator核心配置文件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">
<!--下列所有xml标签顺序不能颠倒、不能多不能少-->
<generatorConfiguration>
    <!--  mysql数据源配置文件路径,0或1个  -->
    <properties resource="jdbc.properties"/>
    <!-- 数据库驱动:选择你的本地硬盘上面的数据库驱动包,0或多个-->
    <classPathEntry location="${jdbc.location}"/>

    <!--1或多个,用于指定生成一组对象的环境
    defaultModelType:如何生成实体类
        1、conditional:这是默认值,这个模型和下面的hierarchical类似,除了如果那个单独的类将只包含一个字段,将不会生成一个单独的类
            因此,如果一个表的主键只有一个字段,那么不会为该字段生成单独的实体类,会将该字段合并到基本实体类中。
        2、flat:该模型为每一张表只生成一个实体类。这个实体类包含表中的所有字段。这种模型最简单,推荐使用。
        3、hierarchical:如果表有主键,那么该模型会产生一个单独的主键实体类,如果表还有BLOB字段,则会为表生成一个包含所有BLOB字段
            的单独的实体类,然后为所有其他的字段生成一个单独的实体类。 MBG会在所有生成的实体类之间维护一个继承关系
    targetRuntime:用于指定生成的代码的运行时环境
        1、MyBatis3:*这是默认值*
        2、MyBatis3Simple
        3、Ibatis2Java2
        4、Ibatis2Java5
        如果你希望不生成和Example查询有关的内容,那么可以按照如下进行配置
        使用MyBatis3Simple可以避免在后面的<table>中逐个进行配置
    -->
    <context id="Mysql" targetRuntime="MyBatis3Simple" defaultModelType="flat">


        <!--autoDelimitKeywords,当表名或者字段名为SQL关键字的时候,可以设置该属性为true,
        MBG会自动给表名或字段名添加分隔符-->
        <property name="autoDelimitKeywords" value="true"/>

        <!--beginningDelimiter和endingDelimiter的默认值为双引号("),
        在Mysql中不能这么写,所以还要将这两个默认值改为反单引号(`)
        例如:select * from `user info`-->
        <property name="beginningDelimiter" value="`"/>
        <property name="endingDelimiter" value="`"/>

        <!--插件用于扩展或修改通过MyBatis Generator (MBG)代码生成器生成的代码-->
        <plugin type="org.mybatis.generator.plugins.SerializablePlugin"></plugin>

        <commentGenerator>
            <!-- 是否去除自动生成的注释 true:是 : false:否 -->
            <property name="suppressAllComments" value="true"/>
            <!--阻止生成的注释包含时间戳-->
            <property name="suppressDate" value="true"/>
        </commentGenerator>

        <jdbcConnection driverClass="${jdbc.driver-class-name}"
                        connectionURL="${jdbc.url}"
                        userId="${jdbc.username}"
                        password="${jdbc.password}">
            <!--解决(当不同数据库中存在相同的表名时,生成的代码有问题)的问题-->
            <property name="nullCatalogMeansCurrent" value="true"/>
        </jdbcConnection>

        <!--
        默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer
            true,把JDBC DECIMAL 和 NUMERIC 类型解析为java.math.BigDecimal
        -->
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>

        <!--  实体类生成路径  -->
        <javaModelGenerator targetPackage="${targetModelPackage}" targetProject="${targetJavaProject}"/>
        <!--  XML生成路径  -->
        <sqlMapGenerator targetPackage="${targetXMLPackage}" targetProject="${targetResourcesProject}"/>
        <!--  接口生成路径  -->
        <javaClientGenerator targetPackage="${targetMapperPackage}" targetProject="${targetJavaProject}" type="XMLMAPPER"/>

        <!--生成全部的表名,用%-->
        <table tableName="user" schema="mybatis_study"/>
        <table tableName="role" schema="mybatis_study"/>
    </context>
    
</generatorConfiguration>

 

6、执行插件,自动生成dao接口、实体类和sql映射文件

springboot集成mybatis-generator插件