小工具      在线工具  汉语词典  css  js  c++  java

MyBatis Generator ORM层面的代码自动生成器

# MyBatis,mybatis,java,spring 额外说明

收录于:152天前

在日常开发工作中,我们经常需要构建各种数据表对应的持久化对象(PO​​JO)、操作数据库的接口(DAO)以及与DAO绑定的相应XML。这些都是一些重复性的操作,不需要太多的技术含量。 MyBatis Generator工具可以帮助我们自动生成这些文件。

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

  • 命令行
  • 蚂蚁
  • 梅文
  • 爪哇
  • 集成开发环境

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

MyBatis 生成器的使用
使用 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超详细配置感谢作者!

. . .

相关推荐

额外说明

ES6中Class的基本用法

1.类的由来 说明: js中生成实例对象的方法是通过构造函数方法实现。 function Add(x, y) { this.x = x this.y = y } Add.

额外说明

CentOS有用参考链接

如何在centos安装Docker

额外说明

【Unity小游戏】整整一个周末写一款《皇室战争 玩法》 的 即时战斗类 游戏Demo。两万多字游戏制作过程+解析

-博客主页:https://blog.csdn.net/zhangay1998 -欢迎点赞 - 收藏 ⭐留言 - 如有错误敬请指正! -本文由 呆呆敲代码的小Y 原创,首发于 CSDN- -未来很长,值得我们全力奔赴更美好的生活✨ 目录 -前言 ✨正文

额外说明

Vue3 基础知识

Vue2 的缺点 Vue 作为一款 MVVM 框架,因为其响应式数据的特性,避免了开发者频繁操作 DOM 元素,大幅提高了页面的性能,然鹅,Vue2 在做数据响应式时,只是使用了 Object.defineProperty() API,对数据属性或者某些

额外说明

VirtualBox内安装ubuntu16.04(带GUI界面)desktop的iso文件及安装步骤(并解决所有基本问题)

官网下载极度缓慢,此处提供网盘链接(包含ubuntu-16.04.7-desktop-amd64.iso,VirtualBox-6.1.14-140239-Win.exe及在virtualbox中装此ubuntu详细步骤!): 链接:https://pa

额外说明

【Unity3D基础2-4】Unity3D面板的功能与使用

一、引言 目录:【Unity3D从入门到进阶】文章目录及设置这个专栏的初衷 这篇介绍Unity3D面板的功能与使用 二、布局 通过右上角的界面布局选择框可以返回默认的几种界面布局: 我个人比较喜欢这样的布局: 保存布局: 三、工具栏 这里是对视窗的操纵按

额外说明

MySQL数据库——DML基本操作

文章目录 前言 插入数据 全列插入 指定列插入 修改数据 删除数据 前言 前面我们学习了MySQL——DDL操作,对数据库和表的结构的操作,那么今天我将为大家分享MySQL——DML操作,对表数据的操作。 MySQL DML操作有以下几种: 插入操作(I

额外说明

变分自编码器(VAE)详解与实现(tensorflow2.x)

变分自编码器(VAE)详解与实现(tensorflow2.x) VAE介绍 VAE原理 变分推理 VAE核心方程 优化方式 重参数化技巧(Reparameterization trick) VAE实现 导入库 重参数技巧 绘制测试图片函数 加载数据与超参

额外说明

《天天数学》连载09:一月九日

格言作者:伯尔赫斯·弗雷德里克·斯金纳(Burrhus Frederic Skinner,1904-1990),美国心理学家,新行为主义学习理论的创始人,也是新行为主义的主要代表。1904年3月20日出生于美国宾夕法尼亚州萨斯奎汉纳,1990年8月18日

额外说明

翻译练习:Hadoop概述

G = f(x) x: big data f: cloud computing G: goal

ads via 小工具