首页   >   代码编程   >   JAVA开发

mybatis-generator代码自动生成插件的使用图文教程

工作中用到的两个主流orm映射框架:hibernate、mybatis,刚毕业那段时间,一直用的都是hibernate,毕竟不用写sql了,当时用的是不亦乐乎,可是后来慢慢发现,这个框架还是无法做到足够精细化的查询,也就是说还是要写sql,果断放弃之,逐渐的转向了mybatis,用着用着也不是很爽了,为什么?

一些复杂的sql自己写写也就算了,可是碰到一些基本的增删改查,这些都需要自己手动来写,这就不是很开心了。

毕竟像我这样的懒人还是多,很早的时候,就有前辈们写出了一个maven插件来决绝这个问题了,它就是今天要讲的工具:mybatis-generator,使用起来也非常的简便。

先给大家看一下本文案例中的工程目录结构:

mybatisgenerator

复制mybatis-generator配置文件,修改jar包地址和数据源

<?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>

    <!--指定特定数据库的jdbc驱动jar包的位置 -->
    <classPathEntry location="D:\Program Files\Apache\maven-3.5.3\repository\mysql\mysql-connector-java\5.1.34\mysql-connector-java-5.1.34.jar"/>

    <context id="default" targetRuntime="MyBatis3" defaultModelType="flat">
        <!-- 可选,旨在创建class时,对注释进行控制 -->
        <commentGenerator>
            <property name="suppressDate" value="true"/>
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>

        <!-- 配置数据源 -->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/test"
                        userId="test"
                        password="test">
        </jdbcConnection>

        <!-- 非必需,类型处理器,在数据库类型和java类型之间的转换控制-->
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>

        <!--生成Entity类存放位置-->
        <javaModelGenerator targetPackage="com.wolffy.reader.entity" targetProject="src/main/java">
            <property name="enableSubPackages" value="true"/>
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>

        <!--生成Mapper文件存放位置-->
        <sqlMapGenerator targetPackage="mybatis.mapper" targetProject="src/main/resources">
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>

        <!--生成Dao类存放位置-->
        <javaClientGenerator targetPackage="com.wolffy.reader.mapper" targetProject="src/main/java" type="XMLMAPPER">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>

        <!--生成对应表及类名-->
        <table tableName="config" domainObjectName="Config" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"/>

        <!--进入项目根目录执行:mvn mybatis-generator:generate -->
    </context>
</generatorConfiguration>

在pom.xml文件中引入插件

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

进入项目的根目录,执行命令:mvn mybatis-generator:generate

就以第一步中的案例来操作,自动生成config信息:Config.java、ConfigMapper.xml、ConfigMapper.java

mybatisgenerator

大家注意到红色框下面有两行Warning信息,大概是说文件已存在,对,没错,因为我这个文件之前已经生成了,我写文章的时候又再次执行了,此时会怎么办呢?截图太长了,我把最后的一点儿日志复制出来

[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building reader 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- mybatis-generator-maven-plugin:1.3.7:generate (default-cli) @ reader ---
[INFO] Connecting to the Database
[INFO] Introspecting table config
[INFO] Generating Record class for table config
[INFO] Generating Mapper Interface for table config
[INFO] Generating SQL Map for table config
[INFO] Saving file ConfigMapper.xml
[INFO] Saving file Config.java
[INFO] Saving file ConfigMapper.java
[WARNING] Existing file E:\workspace2\reader_v2\src\main\java\com\wolffy\reader\entity\Config.java was overwritten
[WARNING] Existing file E:\workspace2\reader_v2\src\main\java\com\wolffy\reader\mapper\ConfigMapper.java was overwritten
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.155 s
[INFO] Finished at: 2019-03-04T21:52:13+08:00
[INFO] Final Memory: 26M/272M
[INFO] ------------------------------------------------------------------------

可以看到,默认是直接覆盖掉了,所以大家在执行命令的时候,一定要查看一下,是否已经有重复文件了。

再去查看一下生成的文件ConfigMapper.java

public interface ConfigMapper {
    int deleteByPrimaryKey(Long id);

    int insert(Config record);

    int insertSelective(Config record);

    Config selectByPrimaryKey(Long id);

    int updateByPrimaryKeySelective(Config record);

    int updateByPrimaryKey(Config record);
}

基本的增删改查已经有了,在这里就不一一复制了,大家可以自己去尝试。

并没什么复杂的配置,上手非常快,兼容性也还不错,我测试过很多类型的项目,不管是springmvc、springboot、ssh、ssm等等,只要maven环境没问题,基本上都可以用。

唯一美中不足的地方(最起码我没有找到),不能批量生成,只能单个执行,如果数据库的表比较多时,就有点儿不好玩了,不过再怎么繁琐,也还是比之前手动写增删改查要轻松得多!

QQ群: 686430774  /  718410762

站长Q: 1347384268

如果文章有帮到你,可以考虑请博主喝杯咖啡!

分享到:

欢迎分享本文,转载请注明出处!

作者:不忘初心

发布时间:2019-03-01

永久地址:https://www.jiweichengzhu.com/article/969f9dc838bf43ed9a87728739254245

评论