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映射文件了,实体类的样子就如第一张图所示。

 

posted @ 2019-08-29 11:33  Sayori  阅读(1609)  评论(0)    收藏  举报