zoukankan      html  css  js  c++  java
  • 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:appN1ckeyHouseproduct11.2.0dbhome_1jdbclibojdbc6.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映射文件了,实体类的样子就如第一张图所示。

  • 相关阅读:
    pycharm运行html文件报404错误
    css3 鼠标悬浮动画效果
    子代选择器和后代选择器的区别
    前端入门
    爬虫Scrapy框架
    BeautifulSoup
    爬虫之selenium使用
    爬虫之BeautifulSoup
    urllib模块
    爬虫基础
  • 原文地址:https://www.cnblogs.com/N1ckeyQu/p/11428754.html
Copyright © 2011-2022 走看看