mybatis-generator自动生成代码

一、mybatis-generator简介

mybatis- generator是mybatis的一款插件,主要用于根据数据库表快速生成对应的domain(即javabean)、mapper接口以及对应的mapper.xml映射文件,非常的方便,可以减少手动编写javabean、mapper接口以及mapper映射文件工作量,非常的高效。

二、mybatis- generator使用

1、在项目的pom文件中引入如下依赖

<!-- mybatis框架相关依赖 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.5</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>3.0.6</version>
</dependency>
<!-- mybatis自动生成bean、dao、mapper代码 -->
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.5</version>
</dependency>
<!-- mybatis分页插件 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>4.2.1</version>
</dependency>
<!-- mysql数据库依赖 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.11</version>
</dependency>

2、config.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="MySQLTables" targetRuntime="MyBatis3">
<!-- mybatis的一些插件 -->
<!--<plugin type="org.mybatis.generator.plugins.RenameExampleClassPlugin">
<property name="searchString" value="Example$" />
<property name="replaceString" value="Criteria" />
</plugin>-->
<!--<plugin type="com.lz.cts.plugin.MySQLPaginationPlugin"></plugin>-->
<!--<plugin type="com.lz.cts.plugin.RenameExampleMethodPlugin"></plugin>-->
<!--<plugin type="com.lz.cts.plugin.ModelFieldCustomizePlugin"></plugin>-->
<!-- 生成的domain实现了序列化 -->
<plugin type="org.mybatis.generator.plugins.SerializablePlugin"></plugin>
<!-- 生成toString()方法 -->
<plugin type="org.mybatis.generator.plugins.ToStringPlugin"></plugin>
<!-- 是否去除自动生成的注释,true:是,false:否 -->
<commentGenerator>
<property name="suppressDate" value="true"/>
<property name="suppressAllComments" value="true"/>
</commentGenerator>
<!-- 数据库连接的信息:驱动类、连接地址、用户名、密码 -->
<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
connectionURL="jdbc:mysql://172.18.237.26/gms?serverTimezone=UTC&amp;useSSL=false"
userId="root" password="Q7Evd*)X2WeV">
<property name="remarks" value="true"/>
</jdbcConnection>
<!-- 默认false,把JDBC DECIMAL和NUMERIC类型解析为Integer,为true时把JDBC DECIMAL 和NUMERIC 类型解析为java.math.BigDecimal -->
<javaTypeResolver>
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<!-- 指定javaBean生成的位置 targetPackage:生成的类要放的包,真实的包受enableSubPackages属性控制;
targetProject:目标项目,指定一个存在的目录下,生成的内容会放到指定目录中,如果目录不存在,MBG不会自动建目录
-->
<javaModelGenerator targetPackage="com.wxl.gms.service.bean" targetProject="gms-service/src/main/java">
<property name="enableSubPackages" value="true"/>
<!-- <property name="trimStrings" value="true" /> -->
<!-- <property name="rootClass" value="com.lz.cts.support.BaseEntity" />-->
</javaModelGenerator>
<!-- 指定mapper映射文件生成的位置,mapper包会自己给你创建 targetPackage、targetProject同javaModelGenerator中作用一样 -->
<sqlMapGenerator targetPackage="mapper" targetProject="gms-service/src/main/resources/mybatis">
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<!-- 指定mapper接口生成的位置 targetPackage、targetProject同javaModelGenerator中作用一样 -->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.wxl.gms.service.dao"
targetProject="gms-service/src/main/java">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<!--指定数据库表domainObjectName:生成的domain类的名字,当表名和domain类的名字有差异时一定要设置,如果不设置,直接使用表名作为domain类的名字;可以设置为somepck.domainName,那么会自动把domainName类再放到somepck包里面; -->
<table tableName="gms_tmp_test"/>
</context>
</generatorConfiguration>

3、运行程序生成对应的各层代码

package com.lz.cts;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.api.VerboseProgressCallback;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.internal.DefaultShellCallback;
public class MybatisGeneratorUtil {
public static void main(String[] args) {
try {
deletefile("E:/jaosn");
System.out.println("start generator ...");
List<String> warnings = new ArrayList<>();
boolean overwrite = true;
File configFile = new File(MybatisGeneratorUtil.class.getResource("../../../config_mysql.xml").getFile());
ConfigurationParser cp = new ConfigurationParser(warnings);
Configuration config = cp.parseConfiguration(configFile);
DefaultShellCallback callback = new DefaultShellCallback(overwrite);
MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
myBatisGenerator.generate(new VerboseProgressCallback());
System.out.println("end generator!");
System.exit(0);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* * 删除某个文件夹下的所有文件夹和文件 * @param delpath String * @throws
* FileNotFoundException * @throws IOException * @return boolean
*/
public static boolean deletefile(String delpath) throws FileNotFoundException, IOException {
try {
File file = new File(delpath);
if (!file.isDirectory()) {
file.delete();
} else if (file.isDirectory()) {
String[] filelist = file.list();
for (int i = 0; i < filelist.length; i++) {
File delfile = new File(delpath + "\\" + filelist[i]);
if (!delfile.isDirectory()) {
delfile.delete();
} else if (delfile.isDirectory()) {
deletefile(delpath + "\\" + filelist[i]);
}
}
//file.delete();
}
} catch (FileNotFoundException e) {
System.out.println("deletefile() Exception:" + e.getMessage());
}
return true;
}
}

三、推荐mybatis好用的三款插件

1、mybatis- generator 自动生成对应的javabean、mapper接口以及mapper映射文件。
2、mybatisplugin 可以快速在mapper接口与mpper映射文件之间定位。
3、mybatis-pagehelper 分页插件,这个没用过,但是最好不用。
这三大插件的使用和安装参见博文: https://blog.csdn.net/Scor1005/article/details/94454377

参考博文:
(1) https://blog.csdn.net/AOBO516/article/details/90245203

posted @   jason小蜗牛  阅读(453)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示