简介

MyBatis Generator 是由MyBatis官方提供的MyBatis代码生成器。可以根据数据库表生成相关代码,比如POJO、Mapper接口、SQL Map xml等。

使用方式

MBG提供了多种的不同场景下的使用方式。

  • 命令行方式
  • maven 插件方式
  • eclipse 插件方式
  • Java程序
  • ant task

配置MBG

MBG所有的配置都是在xml文件里做的。有如下几部分:

  • generatorConfiguration
  • context
    • jdbcConnection
    • javaModelGenerator
    • sqlMapGenerator
    • javaClientGenerator(ANNOTATEDMAPPER、XMLMAPER、MIXEDMAPPER)
      • ANNOTATEDMAPPER:使用注解方式
      • XMLMAPER:使用xml方式
      • MIXEDMAPPER:使用混合方式,复杂的使用xml方式、简单的使用注解方式
    • table

一个大的generatorConfiguration,里面回对上下文做些配置。

可以使用的插件

MBG内置了很多插件,我们可以按照需要配置在配置文件中处理我们的需求。内置的插件都在org.mybatis.generator.plugins包中。

  • FluentBuilderMethodsPlugin
  • ToStringPlugin
  • SerializablePlugin
  • RowBoundsPlugin

另外我们也可以自定义实现使用自己的插件。

使用

这里以maven插件的方式为例,在Spring中使用MBG,并且使用自己定义的插件(主要用来解决,MyBatis Generator每次生成代码会覆盖原来的sql问题。解决方案也简单:在默认生成的代码文件的基础上,在增加一套扩展的、自己业务里使用的xxxMapper.java和xxxMapper.xml)。

添加依赖

在maven项目的pom文件里添加相关依赖和插件

				<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.4</version>
</dependency> <plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.5</version> <dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.11</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.lucky</groupId>
<artifactId>mybatis-generator-extend</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
<configuration>
<configurationFile>${basedir}/src/main/resources/generator/generatorConfig.xml</configurationFile>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
</plugin>

如上分别是mybatis在Spring中使用的依赖,以及MyBatis Generator的插件。同时由于我们使用自己的插件,这里把插件的依赖mybatis-generator-extend也添加了进来。

generatorConfig.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="DB2Tables" targetRuntime="MyBatis3" defaultModelType="flat"> <!--自定义插件-->
<plugin type="com.lucky.plugin.AddExtendDaoPlugin">
<property name="baseDir" value="${mybatis.plugin.base.dir}"/>
<property name="targetProject" value="src/main/java"/>
<property name="targetProjectXml" value="src/main/resources"/>
<property name="mapperPackage" value="${mybatis.plugin.mapper.package}"/>
<property name="mapperXmlPackage" value="${mybatis.plugin.mapperXml.package}"/>
</plugin> <commentGenerator>
<property name="suppressDate" value="true"/>
<!-- 是否去除自动生成的注释 true:是 : false:否 -->
<property name="suppressAllComments" value="true"/>
</commentGenerator>
<!--数据库链接URL,用户名、密码 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/readinglist?serverTimezone=Asia/Shanghai&amp;nullNamePatternMatchesAll=true&amp;nullCatalogMeansCurrent=true&amp;useSSL=false"
userId="root"
password="12345678">
<!--<property name="nullCatalogMeansCurrent" value="true"/>-->
</jdbcConnection>
<javaTypeResolver>
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<!-- 生成模型的包名和位置-->
<javaModelGenerator targetPackage="${mybatis.plugin.model.package}" targetProject="./src/main/java">
<property name="enableSubPackages" value="true"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!-- 生成映射文件的包名和位置-->
<sqlMapGenerator targetPackage="${mybatis.plugin.mapperXml.package}" targetProject="./src/main/resources">
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<!-- 生成DAO的包名和位置-->
<javaClientGenerator type="XMLMAPPER" targetPackage="${mybatis.plugin.mapper.package}"
targetProject="./src/main/java">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<!-- 要生成的表 tableName是数据库中的表名或视图名 domainObjectName是实体类名-->
<table tableName="t_coffee" domainObjectName="Coffee"
enableCountByExample="false"
enableUpdateByExample="false"
enableDeleteByExample="false"
enableSelectByExample="false"
selectByExampleQueryId="false"
>
</table>
</context>
</generatorConfiguration>

如上就是MBG使用的配置文件参数的配置。和常规使用不同的就是添加了自定义的插件。

定义属性值

在配置文件中,有些值的定义是通过属性配置的。这里需要将其进行配置。

    <properties>
<mybatis.plugin.base.dir>${basedir}</mybatis.plugin.base.dir>
<!--映射文件目录-->
<mybatis.plugin.mapper.package>com.lucky.spring.dao</mybatis.plugin.mapper.package>
<!--映射文件对应的xml目录-->
<mybatis.plugin.mapperXml.package>mapper</mybatis.plugin.mapperXml.package>
<!--pojo目录-->
<mybatis.plugin.model.package>com.lucky.spring.model</mybatis.plugin.model.package>
</properties>

执行插件

在上面所有配置都配置完成后,执行mybatis-generator:generate这个goal来生成对应文件。



生成的两个扩展文件分别是xxXMapperExt.java和xxXMapperExt.xml两个文件。自己业务的实现就放到这两个文件里就可以了。当表设计变动时再次执行这两个扩展不会被覆盖。

Spring中使用MyBatis Generator的更多相关文章

  1. spring中的mybatis的sqlSession是如何做到线程隔离的?

    项目中常常使用mybatis配合spring进行数据库操作,但是我们知道,数据的操作是要求做到线程安全的,而且按照原来的jdbc的使用方式,每次操作完成之后都要将连接关闭,但是实际使用中我们并没有这么 ...

  2. 在 Gradle 中使用 MyBatis Generator

    在 Intellij IDEA 中结合 Gradle 使用 MyBatis Generator 逆向生成代码 Info: JDK 1.8 Gradle 2.14 Intellij IDEA 2016. ...

  3. Spring Boot使用MyBatis Generator、Swagger

    MyBatis是Java目前主流的ORM框架,在Spring Boot中使用MyBatis可以参考这篇文章:http://www.ityouknow.com/springboot/2016/11/06 ...

  4. idea中使用MyBatis Generator

    1.新建maven项目 2.新建Generator配置文件 generator_config.xml <?xml version="1.0" encoding="U ...

  5. 在IDEA中使用MyBatis Generator自动生成代码

    转载自 https://blog.csdn.net/hua_faded/article/details/78900780 一.配置Maven pom.xml 文件 在pom.xml增加以下插件:   ...

  6. 在IDEA中使用MyBatis Generator逆向工程生成代码

    本文介绍一下用Maven工具如何生成Mybatis的代码及映射的文件. 一.配置Maven pom.xml 文件 在pom.xml增加以下插件: <build> <finalName ...

  7. 在springboot中使用Mybatis Generator的两种方式

    介绍 Mybatis Generator(MBG)是Mybatis的一个代码生成工具.MBG解决了对数据库操作有最大影响的一些CRUD操作,很大程度上提升开发效率.如果需要联合查询仍然需要手写sql. ...

  8. Spring中的Mybatis

    1. 前言 在构建一个web应用时基本的套路就是SSM,其中的M就是Mybatis. Mybatis作为一款开源的ORM框架, 由于其易于上手的特点成为当下比较流行的ORM框架,当然它还有一款插件能够 ...

  9. idea 中使用Mybatis Generator逆向工程生成代码

    通过MAVEN完成 Mybatis 逆向工程 1. POM文件中添加插件 在 pom 文件的build 标签中 添加 plugin 插件和 数据库连接 jdbc 的依赖. <build> ...

随机推荐

  1. 不用破解版的 Navicat 了,几款免费且好用的 SQL 客户端送给你

    我是风筝,公众号「古时的风筝」. 文章会收录在 JavaNewBee 中,更有 Java 后端知识图谱,从小白到大牛要走的路都在里面. 没别的意思,今天就是为了给你推荐几款 MySQL 客户端,这几款 ...

  2. .Net Core微服务入门全纪录(八)——Docker Compose与容器网络

    Tips:本篇已加入系列文章阅读目录,可点击查看更多相关文章. 前言 上一篇[.Net Core微服务入门全纪录(七)--IdentityServer4-授权认证]中使用IdentityServer4 ...

  3. 如何在Linux环境下用虚拟机跑Windows!

    文章目录 #0x0 Windows #0x1 安装虚拟机 #0x10 下载: #0x11 安装: #0x2 安装虚拟机windows #0x20 下载镜像 #0x21 安装镜像 #0x3 使用Wind ...

  4. (三)学习了解OrchardCore笔记——灵魂中间件ModularTenantContainerMiddleware的第一行①的模块部分

    了解到了OrchardCore主要由两个中间件(ModularTenantContainerMiddleware和ModularTenantRouterMiddleware)构成,下面开始了解Modu ...

  5. python生成器原理剖析

    python生成器原理剖析 函数的调用满足"后进先出"的原则,也就是说,最后被调用的函数应该第一个返回,函数的递归调用就是一个经典的例子.显然,内存中以"后进先出&quo ...

  6. Mysql----左连接、右连接、内连接、全连接的区别

    最近,突然想起来数据库有好些时间没用到,所以,想把数据库有关的知识回顾一下,所以接下来这个月,基本上会以数据库的帖子来写为主,首先,很多同学都会有个错觉,觉得学习数据库会sql语句的增删改查就够了,其 ...

  7. Linux桌面进化史

    自 20 世纪 90 年代初期以来,Linux 桌面也已从简单的窗口管理器发展为成熟.完整的桌面.那么它究竟是如何一步步发展至今的呢?作为从 1993 年就开始使用 Linux 的资深用户,FreeD ...

  8. db2数据库字段更新当前时间

    db2数据库中想要将字段的时间通过sql语句的方式更新: 例如: Update tablename set 字段1='打酱油', 字段2 = TO_CHAR(current timestamp,'YY ...

  9. OSCP Learning Notes - Buffer Overflows(3)

    Finding Bad Characters 1. Find the bad charaters in the following website: https://bulbsecurity.com/ ...

  10. 数据结构C语言实现----出队伍操作

    1.创建一个队列时,空队列中队首和队尾相同,但不是NULL,队首后面挂的元素才是NULL 2.打印队列时,对于链队列,不能把指针加一来找到下一个数据,因为链表地址不连续,需要复制一条链表,不断往后遍历 ...