Mybatis如何自動生成數據庫表的實體類

第一步引入jar

在這裡插入圖片描述

第二步,配置文本文件

# 數據庫驅動jar 路徑 本地創庫的包
drive.class.path=C:/Users/Administrator/.m2/repository/mysql/mysql-connector-java/5.1.30/mysql-connector-java-5.1.30.jar
# 數據庫連接參數
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://192.168.1.188:3306/sxhy_user?useUnicode=true&characterEncoding=utf-8
jdbc.username=root
jdbc.password=rhzh
# 包路徑配置
model.package=com.fishing.personal.common.entity
xml.mapper.package=com.fishing.personal.common.dao.mapper
target.project=src/main/java

第三步配置文件

<?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">
<!-- 配置Run As Maven build : Goals 參數 : mybatis-generator:generate -Dmybatis.generator.overwrite=true -->
<!-- 配置 tableName,使用 Run As Maven build 生成 dao model 層 -->
<!-- maven執行命令:mybatis-generator:generate -->
<generatorConfiguration>
    <!-- 配置文件路徑 -->
    <properties url="${mybatis.generator.generatorConfig.properties}"/>
    <!--數據庫驅動包路徑 -->
    <classPathEntry location="${drive.class.path}"/>
	
	<!--
	上下文配置、核心配置
	屬性介紹
	defaultModelType:
	    conditional:*這是默認值*,這個模型和下面的hierarchical類似,除瞭如果那個單獨的類將隻包含一個字段,將不會生成一個單獨的類。
	    	 因此,如果一個表的主鍵隻有一個字段,那麼不會為該字段生成單獨的實體類,會將該字段合並到基本實體類中。
	    flat:該模型為每一張表隻生成一個實體類。這個實體類包含表中的所有字段。**這種模型最簡單,推薦使用。**
	    hierarchical:如果表有主鍵,那麼該模型會產生一個單獨的主鍵實體類,如果表還有BLOB字段, 則會為表生成一個包含所有BLOB字段的單獨的實體類,
	    	然後為所有其他的字段生成一個單獨的實體類。 MBG會在所有生成的實體類之間維護一個繼承關系。
	-->
    <context id="DB2Tables" targetRuntime="MyBatis3" defaultModelType="flat">
    	<!-- 自動為表名加上前後綴,防止表名中出現空格發生異常(mysql=`) -->
    	<property name="beginningDelimiter" value="`"/>
        <property name="endingDelimiter" value="`"/>
        <!--關閉註釋 -->
        <commentGenerator>
        	<!-- 阻止生成註釋 -->
            <property name="suppressAllComments" value="false"/>
            <!-- 阻止生成註釋包含時間戳 -->
            <property name="suppressDate" value="true"/>
        </commentGenerator>
        
        <!-- 自定義註釋生成類,為以上節點添加type屬性 -->
        <!-- <commentGenerator type="com.package.abel533.mybatis.generator.MyCommentGenerator"/> -->
        <!--數據庫連接信息 -->
        <jdbcConnection driverClass="${jdbc.driver}" connectionURL="${jdbc.url}" userId="${jdbc.username}"
                        password="${jdbc.password}">
        </jdbcConnection>
        <!--生成的model 包路徑 -->
        <javaModelGenerator targetPackage="${model.package}" targetProject="${target.project}">
        	<!-- 是否根據catalog和schema來生成子包 -->
            <property name="enableSubPackages" value="ture"/>
            <!-- 是否使用構造方法入參 -->
            <property name="trimStrings" value="true"/>
            <!-- 是否對字符串進行trim操作 -->
            <property name="trimStrings" value="false" />
        </javaModelGenerator>
		<!--生成xml mapper文件 路徑 -->
        <sqlMapGenerator targetPackage="${xml.mapper.package}" targetProject="${target.project}">
        	<!-- 是否根據catalog和schema來生成子包 -->
            <property name="enableSubPackages" value="ture"/>
        </sqlMapGenerator>
        <!-- 生成的Dao接口 的包路徑 -->
        <!--
        type屬性介紹:(僅用於mybatis3)
        ANNOTATEDMAPPER:基於註解的Mapper接口,不會有對應的XML映射文件
		MIXEDMAPPER:XML和註解的混合形式,(上面這種情況中的)SqlProvider註解方法會被XML替代。
		XMLMAPPER:所有的方法都在XML中,接口調用依賴XML文件。
        -->
       <!--  <javaClientGenerator type="XMLMAPPER" targetPackage="${dao.package}" targetProject="${target.project}">
        	是否根據catalog和schema來生成子包
            <property name="enableSubPackages" value="ture"/>
        </javaClientGenerator> -->
        
        <!-- 對應數據庫表名 -->
        <table tableName="user_client" modelType="flat">
            <!-- 配置所有到方法的根接口 -->
            <property name="rootInterface" value="com.rhzh.client.core.generic.GenericDao&lt;Object, Integer&gt;" />
            <!-- 配置主鍵 -->
            <generatedKey column="id" sqlStatement="Mysql" identity="true"/>
        </table>
        
        <!-- 手動配置table -->
        <!--
        <table tableName="數據庫表名" domainObjectName="自動生成的實體類名" ....更多見參考文檔>
        	配置表的主鍵以及所使用的sql語法
        	<generatedKey column="id" sqlStatement="Mysql"/>
        	....更多見參考文檔
        </table>
        -->
    </context>
</generatorConfiguration>

第四步配置MAVEN

在這裡插入圖片描述

第五步配置MAVEN的插件

第六步,啟動

Mybatis自動生成xml的配置

idea通過數據庫直接生成mybatis的xml和實體文件,很簡單,一共分三步

1.配置generatorConfig.xml

2.配置pom

3.配置命令 mybatis-generator:generate -e

1.配置generatorConfig.xml

以下會自動生成entity,mapper,和xml文件

mapper上是沒有@Mapper註解的呦

<!--<?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="F:\aaaRepository\java\repository\mysql\mysql-connector-java\8.0.17\mysql-connector-java-8.0.17.jar"/>
    <context id="mysql">
            <commentGenerator>
                <property name="suppressDate" value="true" />
                <property name="suppressAllComments" value="true" />
            </commentGenerator>
            <jdbcConnection
                    connectionURL="jdbc:mysql://localhost:3306/aaa?serverTimezone=GMT%2B8"
                    driverClass="com.mysql.cj.jdbc.Driver" password="root" userId="root" />
            <javaTypeResolver>
                <property name="forceBigDecimals" value="false" />
            </javaTypeResolver>
            <javaModelGenerator targetPackage="com.aaa.bbb.entity" targetProject="src/main/java" >
                <property name="constructorBased" value="false"/>
            </javaModelGenerator>
            <sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources"/>
            <javaClientGenerator targetPackage="com.aaa.bbb.mapper" targetProject="src/main/java" type="XMLMAPPER" >
            </javaClientGenerator>
            <table tableName="ccc"  enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false"     enableSelectByExample="false"> </table>         	   
       </context>
</generatorConfiguration>

“context” 的內容必須匹配按照下面的順序配置 ?號的可以沒有

(connectionFactory|jdbcConnection),
javaTypeResolver?,
javaModelGenerator,
sqlMapGenerator?,
javaClientGenerator?,
table+

2.配置pom

<build>
		<plugins>
			<plugin>
				<groupId>org.mybatis.generator</groupId>
				<artifactId>mybatis-generator-maven-plugin</artifactId>
				<configuration>
					<verbose>true</verbose>
					<overwrite>true</overwrite>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

3.命令 mybatis-generator:generate -e

在這裡插入圖片描述

運行上邊的命令就行瞭,實體是駝峰形式的,也可以修改配置和數據庫一樣

public class Ccc{
    private Integer id;
    private String identifyCode;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getIdentifyCode() {
        return identifyCode;
    }
    public void setIdentifyCode(String identifyCode) {
        this.identifyCode = identifyCode;
    }
}

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。

推薦閱讀: