springboot集成mybatis-generator插件

1、包結構

 

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映射文件

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章