MyBatis自動生成實體類、DAO和XML映射文件,並去掉實體類中的getter和setter方法


  今天花了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映射文件了,實體類的樣子就如第一張圖所示。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM