本篇文章是基於上篇文章的代碼基礎上進行的添加,具體代碼可以參考上篇文章:SpringBoot的整合(三、整合mybatis)
注意:本篇文章連接的數據庫為mysql8.0.16版本的,跟低版本的稍微有些不同。
使用mybatis進行開發的時候,model類、mapper.xml、mapper接口等都自己寫十分浪費時間,這里介紹兩種自動生成代碼文件的工具:
一、使用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(全)

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.1.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.flyinghome</groupId> <artifactId>tm</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>tm</name> <description>Demo project for Spring Boot</description> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--mybatis--> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.2</version> </dependency> <!--mysql--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>8.0.16</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <exclusions> <exclusion> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-engine</artifactId> </exclusion> </exclusions> </dependency> <!-- alibaba的druid數據庫連接池 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.9</version> </dependency> <!--lombok:引用了之后,實體類就不需要寫getter、setter、toString方法了--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.6</version> </dependency> <!--pagehelper分頁--> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.2.5</version> </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> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <!--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> </plugins> </build> </project>
(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類了。
至此,兩種方法已經介紹完畢。
參考:
1. https://www.cnblogs.com/kosi/p/11289551.html
持續更新!!!