查看原文
其他

如何让 Mybatis 自动生成代码

点击上方 "程序员小乐"关注公众号, 星标或置顶一起成长

每天早上8点20分, 第一时间与你相约

每日英文

No matter how hard it is, just keep going because you only fail when you give up.

无论多么艰难,都要继续向前,因为只有你放弃的那一刻,你才输了。


每日掏心话

有时候就你要敢于去背上超出自己预料的包袱,真的努力之后,你会发现自己要比想象的优秀很多。


来自:阿进的写字台 | 责编:乐乐

链接:cnblogs.com/homejim/p/9782403.html

程序员小乐(ID:study_tech)第 625 次推文   图片来自网络


往日回顾:面试问我:在浏览器输入 URL 回车之后发生了什么?我竟然回答不上来...



   正文   


在使用 mybatis 过程中, 当手写 JavaBean 和 XML 写的越来越多的时候, 就越来越容易出错。这种重复性的工作, 我们当然不希望做那么多。

还好, mybatis 为我们提供了强大的代码生成:MybatisGenerator。

通过简单的配置,我们就可以生成各种类型的实体类,Mapper接口,MapperXML文件, Example对象等。通过这些生成的文件,我们就可以方便的进行单表进行增删改查的操作。

以下的工具使用的都是 IDEA

1、创建代码生成器

1.1、创建Maven项目

1.1.1、菜单上选择新建项目

File | New | Project

1.1.2、选择左侧的Maven

由于我们只是创建一个普通的项目,此处点击 Next即可。

1.1.3、输入GroupId和ArtifactId

在我的项目中

GroupId 填 com.homejim.mybatis
ArtifactId 填 mybatis-generator

点击 Next。

1.1.4、Finish

通过以上步骤, 一个普通的Maven项目就创建好了。

1.2、配置 generator.xml

其实名字无所谓, 只要跟下面的 pom.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="C:\Users\\Administrator\\.m2\repository\\mysql\\mysql-connector-java\\8.0.12\\mysql-connector-java-8.0.12.jar"/>
    <context id="context" targetRuntime="MyBatis3">
        <commentGenerator>
            <property name="suppressAllComments" value="false"/>
            <property name="suppressDate" value="true"/>
        </commentGenerator>

        <!-- 数据库的相关配置 -->
        <jdbcConnection
                driverClass="com.mysql.jdbc.Driver"
                connectionURL="jdbc:mysql://localhost:3306/mybatis"
                userId="root"
                password="jim777"/>


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

        <!-- 实体类生成的位置 -->
        <javaModelGenerator
                targetPackage="com.homejim.mybatis.entity"
                targetProject=".\src\main\java">

            <property name="enableSubPackages" value="false"/>
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>

        <!-- *Mapper.xml 文件的位置  sqlMapGenerator-->
        <sqlMapGenerator
                targetPackage="mybatis/mapper"
                targetProject=".\src\main\resources">

            <property name="enableSubPackages" value="false"/>
        </sqlMapGenerator>

        <!-- Mapper 接口文件的位置 -->
        <javaClientGenerator type="XMLMAPPER"
                             targetPackage="com.homejim.mybatis.mapper"
                             targetProject=".\src\main\java">

            <property name="enableSubPackages" value="false"/>
        </javaClientGenerator>

        <!-- 相关表的配置 -->

        <table tableName="blog" />
    </context>
</generatorConfiguration>

需要改一些内容:

  • 本地数据库驱动程序jar包的全路径(必须要改)。

  • 数据库的相关配置(必须要改)

  • 相关表的配置(必须要改)

  • 实体类生成存放的位置。

  • MapperXML 生成文件存放的位置。

  • Mapper 接口存放的位置。

如果不知道怎么改, 请看后面的配置详解。

1.3、配置 pom.xml

在原基础上添加一些内容。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>

    <groupId>com.homejim.mybatis</groupId>
    <artifactId>mybatis-generator</artifactId>
    <version>1.0-SNAPSHOT</version>
    <!--在原基础上添加 这些就好了-->
    <build>
        <finalName>mybatis-generator</finalName>
        <plugins>
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.7</version>
                <configuration>
                   <!--此处需要注意, 文件与上面的文件匹配-->
                   <configurationFile>src/main/resources/generator.xml</configurationFile>
                    <verbose>true</verbose>
                    <overwrite>true</overwrite>
                </configuration>
                <executions>
                    <execution>
                        <id>Generate MyBatis Artifacts</id>
                        <goals>
                            <goal>generate</goal>
                        </goals>
                    </execution>
                </executions>
                <dependencies>
                    <dependency>
                        <groupId>org.mybatis.generator</groupId>
                        <artifactId>mybatis-generator-core</artifactId>
                        <version>1.3.7</version>
                    </dependency>
                </dependencies>
            </plugin>
        </plugins>
    </build>
    <!--到此结束-->
</project>

需要注意的是 configurationFile 中的文件指的是 generator.xml。因此路径写的是该文件的相对路径,名称也跟该文件相同。

到此,mybatis-generator 就可以使用啦。

1.4、使用及测试

1.4.1、打开 Maven Projects 视图

在 IDEA 上,打开:

View | Tools | Windwos | Maven Projects

1.4.2、Maven Projects 中双击 mybatis-generator

在右侧此时可以看到 Maven Projects 了。找到 mybatis-generator 插件。

mybatis-generator | Plugins | mybatis-generator | mybatis-generator

1.4.3、双击运行

运行正确后, 生成代码, 得到如下的结构

2、XML 配置详解

仅仅是上面那么简单的使用还不够爽。那么我们就可以通过更改 generator.xml 配置文件的方式进行生成的配置。

2.1、优先

推荐查看官方的文档。

英文不错的:

http://www.mybatis.org/generator/configreference/xmlconfig.html

中文翻译版:

http://mbg.cndocs.ml/index.html

2.2、官网没有的

2.2.1、property 标签

该标签在官网中只是说用来指定元素的属性, 至于怎么用没有详细的讲解。

2.2.1.1、分隔符相关

<property name="autoDelimitKeywords" value="true"/>
<property name="beginningDelimiter" value="`"/>
<property name="endingDelimiter" value="`"/>

以上的配置对应的是 mysql, 当数据库中的字段和数据库的关键字一样时, 就会使用分隔符。

比如我们的数据列是 delete, 按以上的配置后, 在它出现的地方, 就变成 `delete`

2.2.1.2、编码

默认是使用当前的系统环境的编码, 可以配置为 GBK 或 UTF-8

<property name="javaFileEncoding" value="UTF-8"/>

我想项目为 UTF-8, 如果指定生成 GBK, 则自动生成的中文就是乱码。

2.2.1.3、格式化

<!--格式化生成的 Java 代码-->
<property name="javaFormatter" value="org.mybatis.generator.api.dom.DefaultJavaFormatter"/>
<!--格式化生成的 XML-->
<property name="xmlFormatter" value="org.mybatis.generator.api.dom.DefaultXmlFormatter"/>

这些显然都是可以自定义实现的的。

2.2.2、plugins 标签

plugins 标签用来扩展或修改代码生成器生成的代码。

在生成的 XML中, 是没有 <cache> 这个标签的。该标签是配置缓存的。

如果我们想生成这个标签, 那么可以plugins中进行配置。

<plugin type="org.mybatis.generator.plugins.CachePlugin" >
            <property name="cache_eviction" value="LRU"/>
</plugin>

比如你想生成的 JavaBean 中自行实现Serializable接口。

<plugin type="org.mybatis.generator.plugins.SerializablePlugin" />

还能自定义插件。

这些插件都蛮有用的, 感觉后续可以专门开一篇文章来讲解。

2.2.3、commentGenerator 标签

看名称,就知道是用来生成注释用的。

默认配置:

    <commentGenerator >
        <property name="suppressAllComments" value="false"/>
        <property name="suppressDate" value="false"/>
        <property name="addRemarkComments" value="false"/>
    </commentGenerator>


  • suppressAllComments:阻止生成注释, 默认值是false。

  • suppressDate: 阻止生成的注释包含时间戳, 默认为false。

  • addRemarkComments: 注释中添加数据库的注释, 默认为 false。

还有一个就是我们可以通过 type 属性指定我们自定义的注解实现类, 生成我们自己想要的注解。

自定义的实现类需要实现 org.mybatis.generator.api.CommentGenerator

欢迎在留言区留下你的观点,一起讨论提高。如果今天的文章让你有新的启发,学习能力的提升上有新的认识,欢迎转发分享给更多人。


欢迎各位读者加入程序员小乐技术群,在公众号后台回复“加群”或者“学习”即可。


猜你还想看


阿里、腾讯、百度、华为、京东最新面试题汇集

MyBatis 动态SQL(认真看看, 以后写SQL就爽多了)

从一次线上故障思考 Java 问题定位思路

Mybatis的一级缓存和二级缓存的理解以及用法

为什么 IDEA 比 Eclipse 更好?

程序员何苦为难程序员!

关注「程序员小乐」,收看更多精彩内容
嘿,你在看吗?

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存