1,pom 依赖,以 oracle 数据库为例
<build>
<plugins>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.7</version>
<configuration>
<!-- 配置文件所在位置 -->
<configurationFile>src/main/resources/mybatis/config/generator.xml</configurationFile>
<!-- 当生成的类已经存在时,是否覆盖 -->
<overwrite>true</overwrite>
</configuration>
<dependencies>
<!-- 数据库连接 -->
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.1.0.7.0</version>
</dependency>
<!-- 通用 mapper 插件 -->
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>4.1.5</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
2,generator.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>
<context id="Oracle" targetRuntime="MyBatis3Simple" defaultModelType="flat">
<!-- 通用 Mapper 继承的接口 -->
<plugin type="tk.mybatis.mapper.generator.MapperPlugin">
<property name="mappers" value="tk.mybatis.mapper.common.Mapper"/>
</plugin>
<commentGenerator>
<!-- 不生成时间戳 -->
<property name="suppressDate" value="true" />
<!-- 生成注解 -->
<property name="suppressAllComments" value="false" />
<!-- 注解采用数据库的标注,suppressAllComments 必须设置为 false 才会生效 -->
<property name="addRemarkComments" value="true" />
</commentGenerator>
<!-- 数据库连接信息 -->
<jdbcConnection
driverClass="oracle.jdbc.driver.OracleDriver"
connectionURL="jdbc:oracle:thin:@192.168.200.100:1521:helowin"
userId="test"
password="oracle"
>
<!-- oracle 获取数据库注解的方式,想要获取数据库注解必须添加 -->
<property name="remarksReporting" value="true"/>
<!-- mysql 获取数据库注解的方式,想要获取数据库注解必须添加 -->
<!--<property name="useInformationSchema" value="true"/>-->
<!-- 其它类型数据库暂不支持 -->
</jdbcConnection>
<!-- 生成实体类位置 -->
<javaModelGenerator targetPackage="com.hwq.web.server.entity" targetProject="src/main/java">
</javaModelGenerator>
<!-- 生成的 xml 映射文件位置 -->
<sqlMapGenerator targetPackage="mybatis/mapper" targetProject="src/main/resources">
</sqlMapGenerator>
<!-- 生成 mapper 接口的位置 -->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.hwq.web.server.mapper" targetProject="src/main/java">
</javaClientGenerator>
<!-- 数据表 和 JAVA 实体的映射,tableName 表名,domainObjectName 实体名 -->
<table tableName="t_user" domainObjectName="User">
</table>
</context>
</generatorConfiguration>
1,每次需要生成哪个表,就把配置文件的 table 的标签的属性进行修改
2,如果想要一次性生成所有表,可以把 tableName 配置为 *,一般不推荐这么干,开发项目的时候最好是要用到哪些表,才去生成
3,使用 maven 运行插件
mvn org.mybatis.generator:mybatis-generator-maven-plugin:1.3.7:generate -e
注意命令最后的 -e 不能少,要不然生成文件 不是 utf-8 格式,中文会乱码
3,编辑器 idea 调用方式,如果你采用的是 idea 编辑器,那就简单多了,不需要这一长串的启动命令
1,点开编辑器右边的 maven 项目管理
2,找到当前项目,打开 Plugin 找到 mybatis-generator
3,双击 mybatis-generator:genrator 插件就会启动了
新版的逆向工程插件才会有 help 那个命令,有时候我们在 pom 文件中引入 tk.mybatis.mapper 的时候可能 maven 会拉取不到对应的 jar 包,这时候我们就可以双击 help 命令帮助我们拉取
4,生成的效果
package com.hwq.web.server.entity;
import javax.persistence.*;
@Table(name = "T_MENU")
public class Menu {
/**
* 菜单表主键
*/
@Id
@Column(name = "ID")
private String id;
/**
* 菜单名
*/
@Column(name = "NAME")
private String name;
/**
* 菜单对应的图标
*/
@Column(name = "ICON")
private String icon;
/**
* 菜单对应的路径
*/
@Column(name = "PATH")
private String path;
/**
* 外键,菜单表主键
*/
@Column(name = "PID")
private String pid;
/**
* 排列序号
*/
@Column(name = "ORDER_NUM")
private Short orderNum;
/**
* 获取菜单表主键
*
* @return ID - 菜单表主键
*/
public String getId() {
return id;
}
/**
* 设置菜单表主键
*
* @param id 菜单表主键
*/
public void setId(String id) {
this.id = id;
}
/**
* 获取菜单名
*
* @return NAME - 菜单名
*/
public String getName() {
return name;
}
/**
* 设置菜单名
*
* @param name 菜单名
*/
public void setName(String name) {
this.name = name;
}
/**
* 获取菜单对应的图标
*
* @return ICON - 菜单对应的图标
*/
public String getIcon() {
return icon;
}
/**
* 设置菜单对应的图标
*
* @param icon 菜单对应的图标
*/
public void setIcon(String icon) {
this.icon = icon;
}
/**
* 获取菜单对应的路径
*
* @return PATH - 菜单对应的路径
*/
public String getPath() {
return path;
}
/**
* 设置菜单对应的路径
*
* @param path 菜单对应的路径
*/
public void setPath(String path) {
this.path = path;
}
/**
* 获取外键,菜单表主键
*
* @return PID - 外键,菜单表主键
*/
public String getPid() {
return pid;
}
/**
* 设置外键,菜单表主键
*
* @param pid 外键,菜单表主键
*/
public void setPid(String pid) {
this.pid = pid;
}
/**
* 获取排列序号
*
* @return ORDER_NUM - 排列序号
*/
public Short getOrderNum() {
return orderNum;
}
/**
* 设置排列序号
*
* @param orderNum 排列序号
*/
public void setOrderNum(Short orderNum) {
this.orderNum = orderNum;
}
}
package com.hwq.web.server.mapper;
import com.hwq.web.server.entity.Menu;
import tk.mybatis.mapper.common.Mapper;
public interface MenuMapper extends Mapper<Menu> {
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hwq.web.server.mapper.MenuMapper">
<resultMap id="BaseResultMap" type="com.hwq.web.server.entity.Menu">
<!--
WARNING - @mbg.generated
-->
<id column="ID" jdbcType="VARCHAR" property="id" />
<result column="NAME" jdbcType="VARCHAR" property="name" />
<result column="ICON" jdbcType="VARCHAR" property="icon" />
<result column="PATH" jdbcType="VARCHAR" property="path" />
<result column="PID" jdbcType="VARCHAR" property="pid" />
<result column="ORDER_NUM" jdbcType="DECIMAL" property="orderNum" />
</resultMap>
</mapper>