因為項目時間緊迫,需要提高開發效率,故學習使用mybatis的generator插件自動生成代碼,在參考其他部落格代碼的過程中,按照其中一部分部落格寫的方法并不能把項目運作起來(本人在運作demo過程中未解決自己實際遇到的問題),特此寫下此篇部落格,記錄下實際可以運作的方案,以便以後再次使用。
參考原文:https://blog.csdn.net/u010837612/article/details/80351591
一、簡介
1.1 MyBatis Generator介紹
mybatis要寫許多xml檔案,sql語句,dao接口,但大部分都是通用的增删改查操作。繁瑣的編寫讓人頭痛,單從這一點來說jpa更友善。
MyBatis Generator 是MyBatis 官方出品的一款,用來自動生成MyBatis的 mapper、dao、entity 的架構,讓我們省去規律性最強的一部分最基礎的代碼編寫。
1.2 MyBatis Generator使用
MyBatis Generator的使用方式有4種:
指令行生成
Maven方式生成
使用Ant任務生成
使用Java代碼生成
其中推薦使用Maven方式進行代碼生成,因為內建和使用比較簡單。
1.3 開發環境(參考個人實際情況)
MySQL:8.0.12
MyBatis Generator:1.3.7
Maven:4.0
IDEA:2018.2
二、使用Mysql資料庫
建立資料庫,先建立一個資料表來測試:
CREATE TABLE `t_info` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`telephone` varchar(255) DEFAULT '' COMMENT '手機号',
`user_address` varchar(255) DEFAULT '' COMMENT '位址',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
三、代碼自動生成配置
最推薦使用的是Maven方式,下面是Maven方式的MyBatis代碼生成,分為四步:
Step 1:添加和mysql、mybatis相關的依賴(參考,以下隻貼出一部分)
<!--mysql jdbc驅動-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.46</version>
</dependency>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.7</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
Step 2:添加插件(很重要)
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.6</version>
<configuration>
<configurationFile>${basedir}/src/main/resources/generator/generatorConfig.xml</configurationFile>
<overwrite>true</overwrite>
<verbose>true</verbose>
</configuration>
</plugin>
Step 3:
可根據自己的實際情況調整目錄結構,同時修改xml配置檔案的檔案路徑等關鍵資訊,也可以将xx.xml檔案中的部分通用配置資訊放在xx.properties檔案中。
在resources/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">
<generatorConfiguration>
<!-- 資料庫驅動:選擇你的本地硬碟上面的資料庫驅動包-->
<classPathEntry location="C:\Users\Administrator\.m2\repository\mysql\mysql-connector-java\5.1.46\mysql-connector-java-5.1.46.jar"/>
<context id="DB2Tables" targetRuntime="MyBatis3">
<commentGenerator>
<property name="suppressDate" value="true"/>
<!-- 是否去除自動生成的注釋 true:是 : false:否 -->
<property name="suppressAllComments" value="true"/>
</commentGenerator>
<!--資料庫連結URL,使用者名、密碼 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://127.0.0.1/demo" userId="root" password="root">
</jdbcConnection>
<javaTypeResolver>
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<!-- 生成模型的包名和位置-->
<javaModelGenerator targetPackage="com.example.demo.entity" targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!-- 生成映射檔案的包名和位置-->
<sqlMapGenerator targetPackage="mybatis" targetProject="src/main/resources">
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<!-- 生成DAO的包名和位置-->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.example.demo.dao" targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<!-- 要生成的表 tableName是資料庫中的表名或視圖名 domainObjectName是實體類名,還可以設定其他資訊-->
<table tableName="t_info"
domainObjectName="Info"
enableCountByExample="false"
enableUpdateByExample="false"
enableDeleteByExample="false"
enableSelectByExample="false"
selectByExampleQueryId="false">
</table>
</context>
</generatorConfiguration>
Step 3:點選Maven生成代碼
根據你本地的實際情況修改上面配置檔案,更多配置項可以參考官方文檔:http://www.mybatis.org/generator/configreference/xmlconfig.html
點選run Edit Configurations:
添加maven,修改name 和 command line:
mybatis-generator:generate -e
點選确定,然後就可以點選綠色三角形運作了:
運作成功,生成三個檔案:
生成的dao接口檔案和mapper檔案都是以mapper結尾,如果你想修改字尾,可以修改配置檔案中的table标簽,使用mapperName指定名稱
<table tableName="t_info" domainObjectName="Info" mapperName="InfoDao"></table>
1
但是兩個檔案都會改成Dao字尾,本人比較習慣接口命名為Dao,xml檔案命名為Mapper,要解決這個問題,隻能修改源碼,或者手動修改,這裡不具體闡述了。
注意:如果你修改了dao接口和實體類的内容,再次運作generator将會覆寫舊檔案,這點要謹慎。從運作時控制台輸出的資訊也能看到: