MyBatis Generator ORM层面的代码自动生成器(推荐)

 更新时间:2023年01月30日 15:48:58   作者:_小许_  
Mybatis Generator是一个专门为 MyBatis和 ibatis框架使用者提供的代码生成器,也可以快速的根据数据表生成对应的pojo类、Mapper接口、Mapper文件,甚至生成QBC风格的查询对象,这篇文章主要介绍了MyBatis Generator ORM层面的代码自动生成器,需要的朋友可以参考下

在日常开发工作中,我们往往需要自己去构建各种数据表所对应的持久化对象(POJO)、用于操作数据库的接口(DAO)以及跟 DAO 所绑定的对应 XML。这都是一些重复性的操作,不需要多大技术含量。MyBatis Generator工具,能够帮助我们去自动生成这些文件。

MyBatis Generator 简介

作为一个基于 MyBatis 的独立工具,MyBatis Generator 能够满足我们以上的要求,能够通过简单的配置去帮我们生成数据表所对应的 POJO、DAO、XML 等文件,减去我们手动去生成这些文件的时间,有效提高开发效率。MyBatis Generator 运行方式多样,主要可以通过以下几种方式来运行:

  • 命令行
  • Ant
  • Maven
  • Java
  • IDE

Mybatis Generator简称 MBG,是一个专门为 MyBatis和 ibatis框架使用者提供的代码生成器。也可以快速的根据数据表生成对应的pojo类、Mapper接口、Mapper文件,甚至生成QBC风格的查询对象。

MyBatis Generator的使用

使用 MyBatis Generator,需要在项目中配置了数据库和 MyBatis 的相关依赖。

引入插件

<dependency>         
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
</dependency> 
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.25</version>
</dependency>
<!-- mybatis-generator -->
<dependency>
    <groupId>org.mybatis.generator</groupId>
    <artifactId>mybatis-generator-core</artifactId>
    <version>1.3.7</version>
</dependency>

配置生成器文件

<?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>
<!--targetRuntime="MyBatis3"-->
<context id="mysql" defaultModelType="hierarchical" targetRuntime="MyBatis3Simple">
    <!-- 生成的Java文件的编码 -->
    <property name="javaFileEncoding" value="UTF-8" />
    <!-- beginningDelimiter和endingDelimiter:指明数据库的用于标记数据库对象名的符号,比如ORACLE就是双引号,MYSQL默认是`反引号; -->
    <property name="beginningDelimiter" value="`" />
    <property name="endingDelimiter" value="`" />

    <!-- 注释生成器 -->
    <commentGenerator>
        <property name="suppressDate" value="true" />
        <property name="suppressAllComments" value="true" />
    </commentGenerator>

    <!-- 必须要有的,使用这个配置链接数据库 @TODO:是否可以扩展 -->
    <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                    connectionURL="jdbc:mysql://localhost:3306/mybatis"
                    userId="root"
                    password="1111">
    </jdbcConnection>

    <!-- 生成domain对象 -->
    <javaModelGenerator targetPackage="com.sunny.domain" targetProject="mybatis-11_MBG/src/main/java">
        <property name="enableSubPackages" value="true" />
    </javaModelGenerator>

    <!-- 生成Mapper文件 -->
    <sqlMapGenerator targetPackage="com.sunny.mapper" targetProject="mybatis-11_MBG/\src\main\resources">
        <property name="enableSubPackages" value="true" />
    </sqlMapGenerator>

    <!-- 生成Mapper接口 -->
    <javaClientGenerator targetPackage="com.sunny.mapper" type="XMLMAPPER"
                         targetProject="mybatis-11_MBG/src/main/java">
        <property name="enableSubPackages" value="true" />
    </javaClientGenerator>


    <!-- Table   To   POJO -->
    <!--domainObjectName="User"-->
    <table tableName="user2" delimitIdentifiers="true">
        <property name="useActualColumnNames" value="true" />
        <generatedKey column="id" sqlStatement="JDBC" />
    </table>
  
</context>
</generatorConfiguration>

配置文件极为重要,对应数据库表生成POJO对象的映射关系由配置文件完成。

运行配置文件

在这里插入图片描述

Java代码运行:

public class Generator {
	public static void main(String[] args) throws Exception {
		//MBG执行过程中的警告信息
		List<String> warnings = new ArrayList<String>();
		//生成代码重复时,是否覆盖源代码
		boolean override = false;
		InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("generatorConfig.xml");
		ConfigurationParser cp = new ConfigurationParser(warnings);
		Configuration config = cp.parseConfiguration(in);

		DefaultShellCallback callback = new DefaultShellCallback(override);
		//创建MBG
		MyBatisGenerator mbg = new MyBatisGenerator(config, callback, warnings);
		mbg.generate(null);
		//输出警告信息
		for (String warn : warnings) {
			System.out.println(warn);
		}
	}
}

通过Maven插件运行:

如果使用Maven插件,那么不需要引入mybatis-generator-core依赖,只需要引入一个Maven的插件mybatis-generator-maven-plugin

<plugins>
    <plugin>
        <groupId>org.mybatis.generator</groupId>
        <artifactId>mybatis-generator-maven-plugin</artifactId>
        <version>1.4.0</version>
        <executions>
            <execution>
                <id>Generate MyBatis Artifacts</id>
                <goals>
                    <goal>generate</goal>
                </goals>
            </execution>
        </executions>
        <configuration>
            <!-- 输出详细信息 -->
            <verbose>true</verbose>
            <!-- 覆盖生成文件 -->
            <overwrite>true</overwrite>
            <!-- 定义配置文件 -->
            <configurationFile>${basedir}/src/main/resources/generator-configuration.xml</configurationFile>
        </configuration>
    </plugin>
</plugins>

通过mvn mybatis-generator:generate运行,或者IDE一键运行。

参考文献:

Mybatis代码生成器Mybatis-Generator使用详解感谢作者!

MyBatis Generator 超详细配置感谢作者!

到此这篇关于MyBatis Generator ORM层面的代码自动生成器的文章就介绍到这了,更多相关MyBatis Generator 代码自动生成器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • springboot2.x 接入阿里云市场短信发送的实现

    springboot2.x 接入阿里云市场短信发送的实现

    本文主要介绍了springboot2.x 接入阿里云市场短信发送的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • Messges Queue消息队列详解

    Messges Queue消息队列详解

    这篇文章主要介绍了Messges Queue消息队列详解,消息队列一般简称为 MQ,是指利用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成,是在消息的传输过程中保存消息的容器,需要的朋友可以参考下
    2023-07-07
  • Java Spring 中 @PostConstruct 注解使用原理及常见场景

    Java Spring 中 @PostConstruct 注解使用原理及常见场景

    在 Java Spring 中,@PostConstruct 注解是一个非常实用的功能,它允许开发者在 Spring 容器完全初始化 Bean 后执行某些操作,本文将详细介绍 @PostConstruct 注解的使用,包括其原理、常见场景和代码示例,
    2025-04-04
  • 详解Java实现LRU缓存

    详解Java实现LRU缓存

    这篇文章主要介绍了详解Java实现LRU缓存,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • java用split分割字符串的一个有趣现象

    java用split分割字符串的一个有趣现象

    最近在项目中使用了java中的split分割字符串,发现了一个bug,充分了展示了自己对java底层的认知有很多的不足和欠缺。下面将这次的经过总结出来分享给大家,有需要的朋友们可以参考借鉴,下面来一起看看吧。
    2016-12-12
  • Jmeter关联实现及参数化使用解析

    Jmeter关联实现及参数化使用解析

    这篇文章主要介绍了Jmeter关联实现及参数化使用解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • SpringBoot多租户配置与实现示例

    SpringBoot多租户配置与实现示例

    本文详细介绍了在SpringBoot中实现多租户架构的方法和步骤,包括配置数据源、Hibernate拦截器、租户解析器等,以共享数据库、共享数据表的方式,确保数据隔离和安全性,感兴趣的可以了解一下
    2024-09-09
  • Java和C的随机数(Random)详解

    Java和C的随机数(Random)详解

    本篇文章主要介绍了Java和C随机数(Random),现在分享给大家,也给大家做个参考,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-09-09
  • Spring MVC异步上传、跨服务器上传和文件下载功能实现

    Spring MVC异步上传、跨服务器上传和文件下载功能实现

    这篇文章主要介绍了Spring MVC异步上传、跨服务器上传和文件下载功能实现,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-07-07
  • Java中的五种引用类型详解

    Java中的五种引用类型详解

    Java中的五种引用类型:强引用、软引用、弱引用、虚引用和Final引用,分别用于管理对象的生命周期,帮助垃圾回收器更高效地回收不再使用的对象
    2024-12-12

最新评论