tk.mybatis 逆向工程,生成带数据库注释的实体类

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 插件就会启动了

image.png

新版的逆向工程插件才会有 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>
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容