今天花了3個多小時搞定了這個事情,寫個Blog記錄一下,先看一下最終生成的實體類吧。
package com.mybatis.pojo; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; /** * Created by Mybatis Generator on 2019/08/28 */ @Data @NoArgsConstructor @AllArgsConstructor public class Bed { private Long biId; private Long biWiId; private String biStatus; private Long biUpId; private Long biPatient; }
這里使用了Lombok,讓實體類更加簡潔,如何在項目中使用Lombok很多技術博客講的已經很詳細了,不再贅述。
注:我使用的IDE是Eclipse
一、在Eclipse Marketplace中添加MyBatis Generator插件,我這里使用的是1.3.7
二、在src/main/resources中添加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>
<!-- 指定數據連接驅動jar地址,這里選擇你使用的數據庫驅動包 -->
<classPathEntry location="D:\app\N1ckeyHouse\product\11.2.0\dbhome_1\jdbc\lib\ojdbc6.jar" />
<!-- 一個數據庫一個context -->
<context id="context1">
<plugin type="com.mybatis.plugin.IngoreSetterAndGetterPlugin" />
<!-- 注釋 -->
<commentGenerator>
<property name="suppressAllComments" value="true" /><!-- 是否取消注釋 -->
<property name="suppressDate" value="true" /> <!-- 是否生成注釋代時間戳 -->
</commentGenerator>
<!-- jdbc連接,這里我使用的數據庫是Oracle,根據你使用的數據庫進行修改 -->
<jdbcConnection driverClass="oracle.jdbc.driver.OracleDriver" connectionURL="jdbc:oracle:thin:@localhost:1521:orcl" userId="" password="" />
<!-- 生成實體類地址,targetProject對應的是你的項目名, 如果自動生成的內容在src/main/java中,這里只需要填寫你的項目名即可 targetPackage對應的是在哪個包里面生成實體類 -->
<javaModelGenerator targetPackage="com.mybatis.pojo" targetProject="SpringBoot_Vue_HIS">
</javaModelGenerator>
<!-- 映射xml文件生成路徑,我的xml映射文件是放在src/main/resources中的mapping文件夾里面, 所以targetProject這里應該寫成:你的項目名/src/main/resoures -->
<sqlMapGenerator targetPackage="mapping" targetProject="SpringBoot_Vue_HIS/src/main/resources">
<property name="enableSubPackages" value="true" />
</sqlMapGenerator>
<!-- 和xml文件關聯的dao生成路徑(生成文件名默認是***Mapper.java,習慣將其改名成 ***Dao.java) -->
<javaClientGenerator targetPackage="com.mybatis.dao" targetProject="SpringBoot_Vue_HIS" type="XMLMAPPER">
<property name="enableSubPackages" value="true" />
</javaClientGenerator>
<!-- 配置表信息,tableName就是你的表名,domainObjectName就是生成的實體類的類名 -->
<table tableName="BED_INFORMATION_" domainObjectName="Bed"></table>
<table tableName="WARD_INFOMATION_" domainObjectName="Ward"></table>
</context>
</generatorConfiguration>
在上面的代碼中,這行代碼是我們實現自動生成實體類中去掉getter和setter方法的關鍵。
<plugin type="com.mybatis.plugin.IngoreSetterAndGetterPlugin" />
三、新建一個com.mybatis.plugin的包,在包中新建一個類IngoreSetterAndGetterPlugin,代碼如下
package com.mybatis.plugin; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; import org.mybatis.generator.api.IntrospectedColumn; import org.mybatis.generator.api.IntrospectedTable; import org.mybatis.generator.api.PluginAdapter; import org.mybatis.generator.api.dom.java.Interface; import org.mybatis.generator.api.dom.java.Method; import org.mybatis.generator.api.dom.java.TopLevelClass; public class IngoreSetterAndGetterPlugin extends PluginAdapter { @Override public boolean validate(List<String> list) { return true; } @Override public boolean modelBaseRecordClassGenerated(TopLevelClass topLevelClass, IntrospectedTable introspectedTable) { //添加domain的import topLevelClass.addImportedType("lombok.Data"); topLevelClass.addImportedType("lombok.NoArgsConstructor"); topLevelClass.addImportedType("lombok.AllArgsConstructor"); //添加domain的注解 topLevelClass.addAnnotation("@Data"); topLevelClass.addAnnotation("@NoArgsConstructor"); topLevelClass.addAnnotation("@AllArgsConstructor"); //添加domain的注釋 topLevelClass.addJavaDocLine("/**"); topLevelClass.addJavaDocLine("* Created by Mybatis Generator on " + date2Str(new Date())); topLevelClass.addJavaDocLine("*/"); return true; } @Override public boolean clientGenerated(Interface interfaze, TopLevelClass topLevelClass, IntrospectedTable introspectedTable) { //Mapper文件的注釋 interfaze.addJavaDocLine("/**"); interfaze.addJavaDocLine("* Created by Mybatis Generator on " + date2Str(new Date())); interfaze.addJavaDocLine("*/"); return true; } @Override public boolean modelSetterMethodGenerated(Method method, TopLevelClass topLevelClass, IntrospectedColumn introspectedColumn, IntrospectedTable introspectedTable, ModelClassType modelClassType) { //不生成getter return false; } @Override public boolean modelGetterMethodGenerated(Method method, TopLevelClass topLevelClass, IntrospectedColumn introspectedColumn, IntrospectedTable introspectedTable, ModelClassType modelClassType) { //不生成setter return false; } private String date2Str(Date date) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd"); return sdf.format(date); } }
如果出現上方的包不存在的情況,請在pom文件中加入以下依賴
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.7</version>
</dependency>
四、鼠標右鍵選擇我們剛才創建的IngoreSetterAndGetterPlugin.java,以jar的形式導出
五、將jar包導入本地Maven倉庫
比如我們剛才導出的jar包在桌面,進入cmd,使用cd命令進入Desktop
輸入mvn install命令:
mvn install:install-file -DgroupId=org.N1ckeyQu -DartifactId=IngoreSetterAndGetterPlugin -Dversion=1.0.0 -Dpackaging=jar -Dfile=IngoreSetterAndGetterPlugin-1.0.0.jar
這里的DgroupId可以任意寫,我這里寫了我的名字,你可以改成你的。版本號最好是寫1.0.0
導入本地Maven倉庫成功。
我們進入本地倉庫查看一下
六、在pom文件中加入我們剛才導入到本地Maven倉庫的內容
<dependency>
<groupId>org.N1ckeyQu</groupId>
<artifactId>IngoreSetterAndGetterPlugin</artifactId>
<version>1.0.0</version>
</dependency>
這里的內容和我們剛才的mvn install命令中的內容是完全對應的,所以如果你修改了mvn install命令,添加依賴的時候也要修改內容。
七、生成實體類
鼠標右鍵點擊generatorConfig.xml -> run as -> run MyBatis Generator,就自動生成我們需要的實體類、DAO和xml映射文件了,實體類的樣子就如第一張圖所示。