Mybatis代码生成系列(一)- mybatis-generator-gui开源项目介绍
前言
在软件开发的世界中,自动化工具的使用可以极大地提高我们的工作效率。特别是在数据库操作方面,手动编写SQL语句和实体类、映射文件等不仅耗时,而且容易出错。MyBatis作为一款广泛使用的持久层框架,其代码生成器mybatis-generator可以帮助我们自动生成这些繁琐的代码。然而,mybatis-generator默认只支持MySQL数据库,对于其他数据库(如Oracle、PostgreSQL等)的支持并不完善。因此,本文将通过分析现有的开源项目mybatis-generator-gui,来探索如何实现一个支持多种数据库的MyBatis代码生成器。
本系列博客将分为以下几个部分:
- mybatis-generator-gui 使用介绍:首先,我们将介绍如何使用现有的开源项目mybatis-generator-gui进行可视化代码生成。我们将详细讲解如何配置项目,选择数据库,以及生成代码的过程。
- mybatis 代码生成原理探究:在这一部分,我们将深入mybatis-generator的内部,探究其代码生成的原理。我们将分析其配置文件的解析过程,以及如何根据配置信息生成对应的实体类、映射文件和XML配置文件。
- 自定义代码生成器实现:在前两部分的基础上,我们将实现自己的代码生成器。我们将重写mybatis-generator的核心代码,使其支持其他数据库。同时,我们也将优化生成的代码,使其更符合我们的项目需求。
通过本系列博客的学习,你将能够掌握MyBatis代码生成器的使用方法和原理,同时也能够根据自己的需求定制代码生成器。无论你是MyBatis初学者,还是有一定经验的开发者,我相信这都将对你的学习和工作有所帮助。让我们一起开始这个旅程吧!
其他文章
正文
mybatis-generator-gui开源地址
链接:GitHub - zouzg/mybatis-generator-gui: mybatis-generator界面工具,让你生成代码更简单更快捷
运行
我常用的两种方式:下载zip文件或者https clone
这里选择下载zip文件,然后解压
找到com.zzg.mybatis.generator.MainUI类并运行
配置
这里展示相对我的使用习惯的配置:
但是mapper中只有insert,常用的update、delete、select都没有!
然后生成的类文件都缺少类注释!
使用
新建一个maven项目,尝试一下生成的mapper以及对应的xml、model文件能不能直接用。
只需要修改下xml绑定的mapper文件全限定类名就可以直接用了;
其中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注解
参考
GitHub - zouzg/mybatis-generator-gui: mybatis-generator界面工具,让你生成代码更简单更快捷
转载自:https://juejin.cn/post/7323449163420483594