在java后端开发中,使用mybatis作为持久层框架,mybatis generator作为代码生成工具。
介绍下如何快速使用mybatis generator。
前提条件
安装了jdk, maven,mysql。
确保 mysql 可连接
windows 上启动 mysql 服务, 管理员运行 net start mysql
第一步 新建表
CREATE TABLE `item` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`code` varchar(255) DEFAULT NULL COMMENT '商品编码',
`name` varchar(255) DEFAULT NULL COMMENT '商品名称',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='商品信息表'
第二步 新建maven项目
通过maven 生成, mvn archetype:generate
,生成了一堆不需要的东西,
直接用idea新建java project;
第三步 修改 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>fun.aiwith.learn</groupId>
<artifactId>test4</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<!-- MyBatis依赖 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.7</version> <!-- 请使用你需要的版本 -->
</dependency>
<!-- MySQL JDBC 驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.27</version> <!-- 请使用你需要的版本 -->
</dependency>
<!-- MyBatis Generator插件 -->
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.4.2</version> <!-- 请使用你需要的版本 -->
<!-- <scope>runtime</scope>-->
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.7</version> <!-- 请根据需要选择合适的版本 -->
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<dependencies>
<!-- 添加当前项目依赖 -->
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>${project.artifactId}</artifactId>
<version>${project.version}</version>
</dependency>
<!-- 添加你的数据库驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.27</version> <!-- 使用你的数据库版本 -->
</dependency>
</dependencies>
<configuration>
<configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
<overwrite>true</overwrite>
</configuration>
</plugin>
</plugins>
</build>
</project>
第四步 注释处理插件
新建类 fun.aiwith.tool.mybatis.generate.ColumnRemarkPlugin.java
package fun.aiwith.tool.mybatis.generate;
import java.util.List;
import org.mybatis.generator.api.IntrospectedColumn;
import org.mybatis.generator.api.IntrospectedTable;
import org.mybatis.generator.api.Plugin;
import org.mybatis.generator.api.PluginAdapter;
import org.mybatis.generator.api.dom.java.Field;
import org.mybatis.generator.api.dom.java.TopLevelClass;
public class ColumnRemarkPlugin extends PluginAdapter {
public ColumnRemarkPlugin() {
}
@Override
public boolean validate(List<String> warnings) {
return true;
}
@Override
public boolean modelFieldGenerated(Field field, TopLevelClass topLevelClass, IntrospectedColumn introspectedColumn, IntrospectedTable introspectedTable, Plugin.ModelClassType modelClassType) {
String remark = introspectedColumn.getRemarks();
if (remark != null && remark.trim().length() > 0 && !"null".equals(remark)) {
field.addJavaDocLine("/**");
field.addJavaDocLine(" * " + remark.replaceAll("\r|\n|\r\n", ""));
field.addJavaDocLine(" */");
}
return super.modelFieldGenerated(field, topLevelClass, introspectedColumn, introspectedTable, modelClassType);
}
}
第五步 配置 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>
<!-- JDBC 配置 -->
<context id="MySQLContext" targetRuntime="MyBatis3Simple">
<plugin type="fun.aiwith.tool.mybatis.generate.ColumnRemarkPlugin"></plugin>
<!-- 启用注释生成器 -->
<commentGenerator>
<property name="suppressAllComments" value="true"/>
<!-- 确保不生成 Example 相关注释 -->
<property name="suppressExampleClassGeneration" value="true"/>
</commentGenerator>
<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/demo?characterEncoding=UTF-8&useInformationSchema=true"
userId="root"
password="root">
</jdbcConnection>
<!-- 生成简洁的 Java 模型 -->
<javaModelGenerator targetPackage="com.example.model" targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
<property name="trimStrings" value="true"/>
<!-- 禁用 Example 类生成 -->
<!-- 不生成构造方法 -->
<property name="constructorBased" value="false"/>
</javaModelGenerator>
<!-- SQL 映射文件生成配置 -->
<sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources">
<property name="enableSubPackages" value="true"/>
<!-- 禁用 Example 相关方法 -->
<property name="enableExampleMethods" value="false"/>
</sqlMapGenerator>
<!-- Mapper 接口生成配置 -->
<javaClientGenerator type="XMLMAPPER"
targetPackage="com.example.mapper"
targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
<!-- 禁用 Example 类生成 -->
<property name="exampleClass" value="false"/>
</javaClientGenerator>
<!-- 表配置 -->
<table tableName="item" domainObjectName="Item">
<!-- 只生成基本 CRUD -->
<property name="insert" value="true"/>
<property name="selectByPrimaryKey" value="true"/>
<property name="updateByPrimaryKey" value="true"/>
<property name="deleteByPrimaryKey" value="true"/>
<!-- 禁用其他方法 -->
<property name="selectByExample" value="false"/>
<property name="updateByExample" value="false"/>
<property name="deleteByExample" value="false"/>
<property name="countByExample" value="false"/>
<!-- 主键配置 -->
<generatedKey column="id" sqlStatement="JDBC" identity="true"/>
</table>
<!-- 添加更多表... -->
</context>
</generatorConfiguration>
第六步 运行
先安装插件 mvn install
, 完成后,
在项目根目录下执行 mvn mybatis-generator:generate
命令,即可生成代码。
代码结构
.
├── pom.xml
├── src
│ ├── main
│ │ ├── java
│ │ │ └── fun
│ │ │ └── aiwith
│ │ │ └── tool
│ │ │ └── mybatis
│ │ │ └── generate
│ │ │ └── ColumnRemarkPlugin.java
│ │ └── resources
│ │ └── generatorConfig.xml
遇到的问题
mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.5 -DinteractiveMode=false