likes
comments
collection
share

Mybatis代码生成系列(一)- mybatis-generator-gui开源项目介绍

作者站长头像
站长
· 阅读数 48

前言

在软件开发的世界中,自动化工具的使用可以极大地提高我们的工作效率。特别是在数据库操作方面,手动编写SQL语句和实体类、映射文件等不仅耗时,而且容易出错。MyBatis作为一款广泛使用的持久层框架,其代码生成器mybatis-generator可以帮助我们自动生成这些繁琐的代码。然而,mybatis-generator默认只支持MySQL数据库,对于其他数据库(如Oracle、PostgreSQL等)的支持并不完善。因此,本文将通过分析现有的开源项目mybatis-generator-gui,来探索如何实现一个支持多种数据库的MyBatis代码生成器。

本系列博客将分为以下几个部分:

  1. mybatis-generator-gui 使用介绍:首先,我们将介绍如何使用现有的开源项目mybatis-generator-gui进行可视化代码生成。我们将详细讲解如何配置项目,选择数据库,以及生成代码的过程。
  2. mybatis 代码生成原理探究:在这一部分,我们将深入mybatis-generator的内部,探究其代码生成的原理。我们将分析其配置文件的解析过程,以及如何根据配置信息生成对应的实体类、映射文件和XML配置文件。
  3. 自定义代码生成器实现:在前两部分的基础上,我们将实现自己的代码生成器。我们将重写mybatis-generator的核心代码,使其支持其他数据库。同时,我们也将优化生成的代码,使其更符合我们的项目需求。

通过本系列博客的学习,你将能够掌握MyBatis代码生成器的使用方法和原理,同时也能够根据自己的需求定制代码生成器。无论你是MyBatis初学者,还是有一定经验的开发者,我相信这都将对你的学习和工作有所帮助。让我们一起开始这个旅程吧!

其他文章

正文

mybatis-generator-gui开源地址

链接:GitHub - zouzg/mybatis-generator-gui: mybatis-generator界面工具,让你生成代码更简单更快捷

运行

我常用的两种方式:下载zip文件或者https clone

这里选择下载zip文件,然后解压

Mybatis代码生成系列(一)- mybatis-generator-gui开源项目介绍 找到com.zzg.mybatis.generator.MainUI类并运行

配置

这里展示相对我的使用习惯的配置:

Mybatis代码生成系列(一)- mybatis-generator-gui开源项目介绍 但是mapper中只有insert,常用的update、delete、select都没有!

Mybatis代码生成系列(一)- mybatis-generator-gui开源项目介绍 然后生成的类文件都缺少类注释!

使用

新建一个maven项目,尝试一下生成的mapper以及对应的xml、model文件能不能直接用。

Mybatis代码生成系列(一)- mybatis-generator-gui开源项目介绍 只需要修改下xml绑定的mapper文件全限定类名就可以直接用了;

Mybatis代码生成系列(一)- mybatis-generator-gui开源项目介绍

Mybatis代码生成系列(一)- mybatis-generator-gui开源项目介绍

其中pom包参考如下:

<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>org.example</groupId>
  <artifactId>code-generate-basic-config</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>code-generate-basic-config</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
      <version>2.1.1.RELEASE</version>
    </dependency>

    <!-- mysql -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.19</version>
    </dependency>

    <!-- mybatisplus -->
    <dependency>
      <groupId>com.baomidou</groupId>
      <artifactId>mybatis-plus-boot-starter</artifactId>
      <version>3.1.0</version>
    </dependency>

    <!-- 单元测试 -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
      <version>2.1.1.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>1.18.20</version>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <configuration>
          <addResources>true</addResources>
        </configuration>
        <version>2.1.1.RELEASE</version>
      </plugin>
    </plugins>
  </build>
</project>

配置文件application.yaml如下:

mybatis:
  config-location: classpath:mybatis.cfg.xml    #  mybatis主配置文件所在路径
  type-aliases-package: com.demo.drools.entity  #  定义所有操作类的别名所在包
  mapper-locations:                                     #  所有的mapper映射文件
    - classpath:mapper/*.xml
spring: #springboot的配置
  datasource: #定义数据源
    #127.0.0.1为本机测试的ip,3306是mysql的端口号。serverTimezone是定义时区,照抄就好,mysql高版本需要定义这些东西
    #useSSL也是某些高版本mysql需要问有没有用SSL连接
    url: jdbc:mysql://127.0.0.1:3306/XXXX?serverTimezone=GMT%2B8&useSSL=FALSE&characterEncoding=utf-8
    username: XXXX  #数据库用户名,root为管理员
    password: XXXX  #该数据库用户的密码
server:
  port: 8080

小结

mybatis-generator-gui生成mapper、xml和model三类生成文件相对标准,达到日常开发的基本要求,可以直接复制到个人项目中使用,但是达不到团队开发规范的要求;

从提供的功能上看,mybatis-generator-gui不能直接生成service、controller文件,不支持swagger;

从开发团队使用角度看,还需要适配团队规范,生成的文件缺少类文件注释,且对团队使用数据库不支持;

mybatis-generator-gui也提供了一个可选的使用Example配置,这样生成的mapper文件中就有基本的select、update和delete,但是基本都带有example字段,冗余了,而且带有的我不需要的@Param注解

Mybatis代码生成系列(一)- mybatis-generator-gui开源项目介绍

Mybatis代码生成系列(一)- mybatis-generator-gui开源项目介绍

参考

GitHub - zouzg/mybatis-generator-gui: mybatis-generator界面工具,让你生成代码更简单更快捷

转载自:https://juejin.cn/post/7323449163420483594
评论
请登录