https://www.cnblogs.com/flyinghome/p/12927059.html
一、使用mybatis的generator工具。
(1)首先pom.xml文件中添加
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>8.0.16</scope>
</dependency>
<!--mybatis自動生成工具-->
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.5</version>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>4.0.0</version>
</dependency>
<!--mybatis自動生成工具-->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.5</version>
<configuration>
<verbose>true</verbose>
<overwrite>true</overwrite>
<configurationFile>src/main/resources/mybatis-generator.xml</configurationFile>
</configuration>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>4.0.0</version>
</dependency>
</dependencies>
</plugin>
pom.xml(全)
pom.xml
(2)創建mybatis-generator.xml文件
路徑在resources文件夾下,位置不固定,如果修改了,需要對應修改pom.xml文件中的<configurationFile>標簽內的地址。
里面需要修改的地方:
1. 數據連接的數據庫名、數據庫地址、賬號、密碼。
2. 生成model、xml、mapper接口、table標簽名稱等信息。
注意:數據庫連接的driverClass,高版本為com.mysql.cj.jdbc.Driver。低版本為com.mysql.jdbc.Driver。
高版本:
<?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="DB2Tables" defaultModelType="flat" targetRuntime="MyBatis3">
<!-- 生成的Java文件的編碼 -->
<property name="javaFileEncoding" value="UTF-8"/>
<!-- 格式化java代碼 -->
<property name="javaFormatter" value="org.mybatis.generator.api.dom.DefaultJavaFormatter"/>
<!-- beginningDelimiter和endingDelimiter:指明數據庫的用於標記數據庫對象名的符號,比如ORACLE就是雙引號,MYSQL默認是`反引號; -->
<property name="beginningDelimiter" value="`"/>
<property name="endingDelimiter" value="`"/>
<!-- JavaBean 實現 序列化 接口 -->
<plugin type="org.mybatis.generator.plugins.SerializablePlugin"/>
<!-- generat entity時,生成toString -->
<plugin type="org.mybatis.generator.plugins.ToStringPlugin"/>
<!-- 此處是將Example改名為Criteria 當然 想改成什么都行~ -->
<plugin type="org.mybatis.generator.plugins.RenameExampleClassPlugin">
<property name="searchString" value="Example$"/>
<property name="replaceString" value="Selective"/>
</plugin>
<commentGenerator type="org.mybatis.generator.internal.DefaultCommentGenerator">
<!-- 是否去除自動生成的注釋 true:是 : false:否 -->
<property name="suppressAllComments" value="true"/>
</commentGenerator>
<!--數據庫連接的信息:驅動類、連接地址、用戶名、密碼 -->
<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/test?characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8" userId="root"
password="root">
<property name="nullCatalogMeansCurrent" value="true"/>
</jdbcConnection>
<!-- 默認false,把JDBC DECIMAL 和 NUMERIC 類型解析為 Integer,為 true時把JDBC DECIMAL 和
NUMERIC 類型解析為java.math.BigDecimal -->
<javaTypeResolver>
<property name="forceBigDecimals" value="true"/>
</javaTypeResolver>
<!-- targetProject:生成PO類的位置 -->
<javaModelGenerator targetPackage="com.flyinghome.tm.model"
targetProject="./src/main/java">
<!-- 在targetPackage的基礎上,根據數據庫的schema再生成一層package,最終生成的類放在這個package下,默認為false -->
<property name="enableSubPackages" value="true"/>
<!-- 從數據庫返回的值被清理前后的空格 -->
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!-- targetProject:mapper映射文件生成的位置 -->
<sqlMapGenerator targetPackage="mapper" targetProject="./src/main/resources">
<!-- enableSubPackages:是否讓schema作為包的后綴 -->
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<!-- targetPackage:mapper接口生成的位置 -->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.flyinghome.tm.dao"
targetProject="./src/main/java">
<!-- enableSubPackages:是否讓schema作為包的后綴 -->
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<!-- 指定數據庫表 -->
<!-- <table schema="" tableName="WECHAT_MESSAGE"/> -->
<table schema="" tableName="user_info" domainObjectName="UserDO"/>
<!-- 指定數據庫所有表 -->
<!-- <table schema="" tableName="%"/> -->
<!-- 有些表的字段需要指定java類型
<table schema="" tableName="">
<columnOverride column="" javaType="" />
</table> -->
</context>
</generatorConfiguration>
低版本:
<?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="DB2Tables" defaultModelType="flat" targetRuntime="MyBatis3">
<!-- 生成的Java文件的編碼 -->
<property name="javaFileEncoding" value="UTF-8"/>
<!-- 格式化java代碼 -->
<property name="javaFormatter" value="org.mybatis.generator.api.dom.DefaultJavaFormatter"/>
<!-- beginningDelimiter和endingDelimiter:指明數據庫的用於標記數據庫對象名的符號,比如ORACLE就是雙引號,MYSQL默認是`反引號; -->
<property name="beginningDelimiter" value="`"/>
<property name="endingDelimiter" value="`"/>
<!-- JavaBean 實現 序列化 接口 -->
<plugin type="org.mybatis.generator.plugins.SerializablePlugin"/>
<!-- generat entity時,生成toString -->
<plugin type="org.mybatis.generator.plugins.ToStringPlugin"/>
<!-- 此處是將Example改名為Criteria 當然 想改成什么都行~ -->
<plugin type="org.mybatis.generator.plugins.RenameExampleClassPlugin">
<property name="searchString" value="Example$"/>
<property name="replaceString" value="Selective"/>
</plugin>
<commentGenerator type="org.mybatis.generator.internal.DefaultCommentGenerator">
<!-- 是否去除自動生成的注釋 true:是 : false:否 -->
<property name="suppressAllComments" value="true"/>
</commentGenerator>
<!--數據庫連接的信息:驅動類、連接地址、用戶名、密碼 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://127.0.0.1:3306/test?useSSL=false" userId="root"
password="root">
<property name="nullCatalogMeansCurrent" value="true"/>
</jdbcConnection>
<!-- 默認false,把JDBC DECIMAL 和 NUMERIC 類型解析為 Integer,為 true時把JDBC DECIMAL 和
NUMERIC 類型解析為java.math.BigDecimal -->
<javaTypeResolver>
<property name="forceBigDecimals" value="true"/>
</javaTypeResolver>
<!-- targetProject:生成PO類的位置 -->
<javaModelGenerator targetPackage="com.dataobject"
targetProject="./src/main/java">
<!-- 在targetPackage的基礎上,根據數據庫的schema再生成一層package,最終生成的類放在這個package下,默認為false -->
<property name="enableSubPackages" value="true"/>
<!-- 從數據庫返回的值被清理前后的空格 -->
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!-- targetProject:mapper映射文件生成的位置 -->
<sqlMapGenerator targetPackage="mapping" targetProject="./src/main/resources">
<!-- enableSubPackages:是否讓schema作為包的后綴 -->
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<!-- targetPackage:mapper接口生成的位置 -->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.tm.dao"
targetProject="./src/main/java">
<!-- enableSubPackages:是否讓schema作為包的后綴 -->
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<!-- 指定數據庫表 -->
<!-- <table schema="" tableName="WECHAT_MESSAGE"/> -->
<table schema="" tableName="user" domainObjectName="userDO"/>
<!-- 指定數據庫所有表 -->
<!-- <table schema="" tableName="%"/> -->
<!-- 有些表的字段需要指定java類型
<table schema="" tableName="">
<columnOverride column="" javaType="" />
</table> -->
</context>
</generatorConfiguration>
(3)執行生成對應的文件。
點擊run--Edit Configurations--點擊 '+' 按鈕,創建一個maven--右側填寫Command line的值為:mybatis-generator:generate (手動填寫,會有提示)

選中我們剛才創建的,之后點擊執行。

控制台:
原目錄vs新目錄:

二、使用idea工具
首先需要下載一下easy code這個插件,下載安裝完成后,重啟ideal。

之后點擊ideal軟件窗口右側的Database按鈕,點擊符號 '+' ,選擇Data Source中的MySQL。

彈出如下框體,輸入User、Password、Database(數據庫名稱),之后點擊下面的Test Connection按鈕進行連接測試。

如圖,提示我缺少驅動,直接按照提示點擊進行下載。

下載之后,再次點擊連接測試按鈕測試,提示Successful。

此時,點擊Apply、ok退出之后,發現已經有了一條連接,但是點開之后,這是什么鬼。。。。

沒有我們想要的表結構,解決辦法如下,點擊下圖的按鈕

在彈出的框中,選中Schemas,之后勾選上自己需要的數據庫。

此時再點開這條連接,就會發現表和對應的結構出來了。

在任意一個表名上右鍵,選中EasyCode---Generate Code

之后彈出如下框,選中一個生成的路徑,之后勾選要生成的文件,點擊OK。

可以看到已經生成了對應的目錄和文件了,我這里報錯是因為已經有了一個User類了。

至此,兩種方法已經介紹完畢。

