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