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