MyBatis Generator 是一个基于 MyBatis 的代码生成器,它可以根据数据库表结构自动生成对应的 Java 实体类、Mapper 接口和 XML 映射文件。而 MyBatis Generator Maven 插件则是将 MyBatis Generator 集成到 Maven 构建过程中的工具,使得在项目构建时可以自动执行代码生成任务。
在 Docker 中使用 MyBatis Generator Maven 插件可以帮助我们更加方便地执行代码生成任务,并且可以使得代码生成的环境与实际部署环境保持一致,避免由于环境差异导致的问题。
Docker 安装
首先需要安装 Docker,可以参考官方文档进行安装:https://docs.docker.com/get-docker/
创建 Docker 镜像
接下来需要创建一个 Docker 镜像,该镜像包含了 MyBatis Generator Maven 插件和项目代码。
1. 编写 Dockerfile
在项目根目录下创建 Dockerfile,内容如下:
// www.javascriptcn.com code example FROM maven:3.6.3-jdk-8 WORKDIR /app COPY . /app RUN mvn clean package -DskipTests CMD ["java", "-jar", "/app/target/mybatis-generator.jar"]
首先指定了基础镜像为 Maven 3.6.3 和 JDK 8,然后将当前目录下的所有文件复制到容器中的 /app 目录下,并执行 Maven 构建任务。最后在容器启动时执行 MyBatis Generator 代码生成任务。
2. 构建 Docker 镜像
在命令行中执行以下命令构建 Docker 镜像:
docker build -t mybatis-generator .
其中 -t 参数指定了镜像名称为 mybatis-generator,. 表示当前目录为构建上下文。
3. 启动 Docker 容器
执行以下命令启动 Docker 容器:
docker run -v /path/to/project:/app mybatis-generator
其中 -v 参数指定了将本地项目目录挂载到容器中的 /app 目录下,这样容器中的代码就可以直接读取本地项目目录中的文件。
MyBatis Generator Maven 插件配置
在项目的 pom.xml 文件中添加 MyBatis Generator Maven 插件的配置:
// www.javascriptcn.com code example
<build>
<plugins>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.4.0</version>
<configuration>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
<dependencies>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.26</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>其中 <configuration> 部分为插件的配置,这里开启了 verbose 和 overwrite 选项,表示输出详细日志和覆盖已有文件。
在 <dependencies> 部分添加了 MySQL 驱动依赖,根据实际情况修改版本号。
示例代码
以 Spring Boot 项目为例,假设已经有一个名为 mybatis-demo 的项目,其中已经配置好了数据库连接和 MyBatis 依赖。
1. 创建数据库表
首先创建一个名为 user 的数据库表,包含 id、name 和 age 三个字段。
CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(32) NOT NULL, `age` int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;
2. 编写 MyBatis Generator 配置文件
在项目的 src/main/resources 目录下创建一个名为 generatorConfig.xml 的文件,内容如下:
// www.javascriptcn.com code example
<?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="context1">
<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/mybatis_demo?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai"
userId="root"
password="root">
</jdbcConnection>
<javaModelGenerator targetPackage="com.example.mybatisdemo.model"
targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<sqlMapGenerator targetPackage="mapper"
targetProject="src/main/resources">
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<javaClientGenerator type="XMLMAPPER"
targetPackage="com.example.mybatisdemo.mapper"
targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<table tableName="user"
domainObjectName="User"
enableCountByExample="false"
enableDeleteByExample="false"
enableSelectByExample="false"
enableUpdateByExample="false">
</table>
</context>
</generatorConfiguration>其中 <jdbcConnection> 部分为数据库连接配置,根据实际情况修改数据库 URL、用户名和密码。
<javaModelGenerator> 部分为 Java 实体类生成配置,将生成的实体类放在了 com.example.mybatisdemo.model 包下。
<sqlMapGenerator> 部分为 XML 映射文件生成配置,将生成的 XML 文件放在了 resources/mapper 目录下。
<javaClientGenerator> 部分为 Mapper 接口生成配置,将生成的 Mapper 接口放在了 com.example.mybatisdemo.mapper 包下。
<table> 部分为对应数据库表的配置,这里只生成了 User 实体类、UserMapper 接口和 user.xml 映射文件。
3. 执行 MyBatis Generator
在项目根目录下执行以下命令即可执行 MyBatis Generator:
docker run -v $(pwd):/app mybatis-generator
其中 $(pwd) 表示当前目录的绝对路径,这里将当前目录挂载到容器中的 /app 目录下。
执行完毕后,可以在项目的 src/main/java 和 src/main/resources 目录下看到生成的文件。可以将这些文件直接复制到项目中使用,也可以通过 Maven 构建自动将它们打包进 JAR 文件中。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67d0f109a941bf71342053b3