MyBatis逆向工程

Mybatis 提供了一个逆向工程工具,该工具可以根据数据表自动生成针对单表的 po 类、mapper 映射文件和 mapper 接口。大大缩减了开发时间,可以让开发人员将更多的精力放在繁杂的业务逻辑上。

之所以强调单表两个字,是因为 MyBatis 逆向工程生成的 Mapper 中的操作都是针对单表的。在大型项目中,很少有复杂的多表关联查询,所以该工具作用还是很大的。

在前面的示例程序中《Mybatis简单示例程序》中,其实已经使用了MyBatis的逆向工程。

1、集成Mybatis逆向工程插件

在项目的pom.xml中,引入maven的依赖插件,如下:

<plugin>
    <groupId>org.mybatis.generator</groupId>
    <artifactId>mybatis-generator-maven-plugin</artifactId>
    <version>1.3.2</version>
    <configuration>
        <verbose>true</verbose>
        <overwrite>true</overwrite>
        <configurationFile>${project.basedir}/src/main/resources/generatorConfig-mysql.xml
                    </configurationFile>
    </configuration>
</plugin>

2、编写插件的配置文件

generatorConfig-mysql.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>

    <classPathEntry location="/Users/kame/Documents/works/repository/mysql/mysql-connector-java/8.0.16/mysql-connector-java-8.0.16.jar"/>
    <context id="prod" targetRuntime="MyBatis3" defaultModelType="flat">
        <!-- RowBounds pagination -->
        <plugin type="org.mybatis.generator.plugins.RowBoundsPlugin"/>
        <plugin type="org.mybatis.generator.plugins.CaseInsensitiveLikePlugin"/>
        <plugin type="org.mybatis.generator.plugins.SerializablePlugin"/>

        <commentGenerator>
            <property name="suppressDate" value="true"/>
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>

        <!-- jdbc连接 -->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/demo?useSSL=false" userId="root"
                        password="12345678"/> <!--12345678-->

        <javaTypeResolver>
            <property name="forceBigDecimals" value="true"/>
        </javaTypeResolver>

        <javaModelGenerator targetPackage="net.jhelp.mybatis.learning.orm.entity" targetProject="src/main/java">
            <!-- 是否针对string类型的字段在set的时候进行trim调用 -->
            <property name="trimStrings" value="true"/>
            <property name="enableSubPackages" value="true"/>
        </javaModelGenerator>
        <sqlMapGenerator targetPackage="mapperXml" targetProject="src/main/resources"/>
        <javaClientGenerator targetPackage="net.jhelp.mybatis.learning.orm.mapper"
                             targetProject="src/main/java" type="XMLMAPPER">
        </javaClientGenerator>

        <!--<table tableName="subject_article" enableCountByExample="false"-->
               <!--enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false"-->
               <!--selectByExampleQueryId="false"/>-->
        <table tableName="person" enableCountByExample="false"
               enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false"
               selectByExampleQueryId="false"/>


</context>
</generatorConfiguration>

3、创建表


CREATE TABLE `person` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'PK',
  `name` varchar(255) DEFAULT '' COMMENT '名称',
  `age` int(10) unsigned DEFAULT '1' COMMENT '年龄',
  `school` varchar(255) DEFAULT '' COMMENT '学校',
  `province` varchar(255) DEFAULT '' COMMENT '藉惯',
  `created_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `creator` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT '' COMMENT '创建人',
  `revised_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
  `reviser` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT '' COMMENT '修改人',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 COMMENT='会员表';

4、生成

Clipboard Image.png

注意:本人在idea 上装了 mavehelper 插件,可以通过右键的方式来运行maven的。

按照上图的指引,就可以生成mybatis 的实体和 mapper, xml文件。

运行后的结果如下图:

image.png


需要上述程序代码的,请关注公众号「技术老男孩」,在手机上阅读所有教程,随时随地都能学习。内含一款搜索神器,免费下载全网书籍和视频。

腾讯云推出云产品限时特惠抢购活动:2C2G云服务器7.9元/月起
本文链接:https://www.jhelp.net/p/3zLQrqpDuSp7uoWa (转载请保留)。
关注下面的标签,发现更多相似文章