使用MyBatis快速生成代码的几种方法

 更新时间:2023年12月07日 11:07:51   作者:鱼辞  
本文主要介绍了如何使用MyBatis快速生成代码的几种方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

一、使用MyBatis插件和EasyCdoe插件

1. 安装插件

打开IDEA  > settings > Plugins > Marketplace
安装Free MyBatis Plugin 和 Easy Code 两个插件

在这里插入图片描述

2. IDEA里配置MySQL

2.1 选择DataSource >MySQL

在这里插入图片描述

2.2 连接到MySQL数据

在这里插入图片描述

3.根据数据库表生成文件

3.1 连接MySQL成功界面如下。

选中需要生成文件的表,右击EasyCode > Generate Code

在这里插入图片描述

3.2 选择package和path,会将生成的文件放在你选择的路径下,需要什么类型的文件在template中选中,然后开始生成。

在这里插入图片描述

3.3 生成成功

在这里插入图片描述

二、mybatis-generator快速生成代码

将mybatis-generator配置到项目里,将文件直接生成到指定的目录。

1. 配置generatorConfig.xml

在项目src/main/resources 下新建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>
    <!-- mysql-connector-java 版本需要与pom中引得版本一致 -->
    <classPathEntry location="C:\.m2\repository\mysql\mysql-connector-java\5.1.6\mysql-connector-java-5.1.6.jar" />

    <context id="DB2Tables" targetRuntime="MyBatis3">

        <!-- 不加注释,因为默认注释是英文的 -->
        <commentGenerator>
            <property name="addRemarkComments" value="true"/>
            <property name="suppressDate" value="true"/>
        </commentGenerator>

        <!-- 数据库连接信息 -->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/sqmall?characterEncoding=utf-8&amp;useSSL=false&amp;serverTimezone=UTC"
                        userId="root"
                        password="root">
        </jdbcConnection>

        <javaTypeResolver >
            <property name="forceBigDecimals" value="false" />
        </javaTypeResolver>

        <!-- targetPackage 文件生成在指定包下,targetProject 路径-->
        <javaModelGenerator targetPackage="com.seven.mall.entity" targetProject="src/main/java">
            <property name="enableSubPackages" value="true" />
            <property name="trimStrings" value="true" />
        </javaModelGenerator>

        <sqlMapGenerator targetPackage="mappers"  targetProject="src/main/resources">
            <property name="enableSubPackages" value="true" />
        </sqlMapGenerator>

        <javaClientGenerator type="XMLMAPPER" targetPackage="com.seven.mall.dao"  targetProject="src/main/java">
            <property name="enableSubPackages" value="true" />
        </javaClientGenerator>

        <!-- domainObjectName 即生成后entity的名字 -->
        <table tableName = "mall_category" domainObjectName="Category" />
        <table tableName = "mall_order" domainObjectName="Order" />

    </context>
</generatorConfiguration>

2. pom.xml中配置mybatis-generator

<!-- dependency和plugin中jar的版本根据自己需求选择,但同一个jar版本要保持一致 -->
<!-- 配置在dependencies中 -->
<dependency>
	<groupId>org.mybatis.generator</groupId>
	<artifactId>mybatis-generator-core</artifactId>
	<version>1.3.7</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.6</version>
</dependency>
   <!-- 配置在plugins中 -->
<plugin>
	<groupId>org.mybatis.generator</groupId>
	<artifactId>mybatis-generator-maven-plugin</artifactId>
	<version>1.3.7</version>
	<configuration>
	    <overwrite>true</overwrite>   <!-- 重复生成时覆盖掉上次生成的文件 -->
	</configuration>
</plugin>

3. 输入命令生成文件

在IDEA Terminal 或者打开命令行切换至项目路径
输入命令 mvn mybatis-generator:generate 回车即可

在这里插入图片描述

在这里插入图片描述

4. 成功生成

在这里插入图片描述

三、使用工具项目生成代码

介绍

其实第三种方法和第二种是一样的都是使用mybatis-generator生成。

第二种方法需要在自己的项目中配置一些东西

第三种方法是将这些配置,jar之类的东西拿出来做成一个项目,当作工具来用,使用时只需要修改表名和生成的package路径即可。

1. 下载工具项目

https://wwa.lanzoui.com/iG2Ent9yv5i

这个项目和第二种方法生成出来的java文件基本是一模一样的。

但是我在mybatis-generator-core-1.3.2.jar\org\mybatis\generator\plugins\里加了一个名称: LombokPlugin.class。会给生成的entity加上注解,这样就不需要写getter、setter和toString方法了.

当然了,如果不使用lombok,那么可以删掉这个class或者删除生成后的注解。

2. IDEA打开项目,修改配置文件

2.1 修改文件生成的位置

在这里插入图片描述

2.2 指定数据库表

在这里插入图片描述

3. 运行并生成文件

3.1 运行GeneratorSqlmap的main方法

在这里插入图片描述

3.2 生成成功

大功告成

在这里插入图片描述

4. 关于mybatis-generator-core中添加lombok

  • 取下面的代码,编译为class文件:LombokPlugin.class
  • 用解压软件打开mybatis-generator-core-1.3.2.jar
  • 把编译好的class文件放到org\mybatis\generator\plugins\下即可

感兴趣的小伙伴可以自己去试一下

代码如下:

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//

package org.mybatis.generator.plugins;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import org.mybatis.generator.api.IntrospectedColumn;
import org.mybatis.generator.api.IntrospectedTable;
import org.mybatis.generator.api.PluginAdapter;
import org.mybatis.generator.api.Plugin.ModelClassType;
import org.mybatis.generator.api.dom.java.Interface;
import org.mybatis.generator.api.dom.java.Method;
import org.mybatis.generator.api.dom.java.TopLevelClass;

public class LombokPlugin extends PluginAdapter {
    public LombokPlugin() {
    }

    public boolean validate(List<String> list) {
        return true;
    }

    public boolean modelBaseRecordClassGenerated(TopLevelClass topLevelClass, IntrospectedTable introspectedTable) {
        topLevelClass.addImportedType("lombok.Data");
        topLevelClass.addImportedType("lombok.Builder");
        topLevelClass.addImportedType("lombok.NoArgsConstructor");
        topLevelClass.addImportedType("lombok.AllArgsConstructor");
        topLevelClass.addAnnotation("@Data");
        topLevelClass.addJavaDocLine("/**");
        topLevelClass.addJavaDocLine("* Created by Mybatis Generator on " + this.date2Str(new Date()));
        topLevelClass.addJavaDocLine("*/");
        return true;
    }

    public boolean clientGenerated(Interface interfaze, TopLevelClass topLevelClass, IntrospectedTable introspectedTable) {
        interfaze.addJavaDocLine("/**");
        interfaze.addJavaDocLine("* Created by Mybatis Generator on " + this.date2Str(new Date()));
        interfaze.addJavaDocLine("*/");
        return true;
    }

    public boolean modelSetterMethodGenerated(Method method, TopLevelClass topLevelClass, IntrospectedColumn introspectedColumn, IntrospectedTable introspectedTable, ModelClassType modelClassType) {
        return false;
    }

    public boolean modelGetterMethodGenerated(Method method, TopLevelClass topLevelClass, IntrospectedColumn introspectedColumn, IntrospectedTable introspectedTable, ModelClassType modelClassType) {
        return false;
    }

    private String date2Str(Date date) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
        return sdf.format(date);
    }
}

以上就是使用MyBatis快速生成代码的几种方法的详细内容,更多关于MyBatis生成代码的资料请关注脚本之家其它相关文章!

相关文章

  • Java实现泡泡堂对战版游戏的示例代码

    Java实现泡泡堂对战版游戏的示例代码

    本文将利用Java制作经典游戏《泡泡堂》,文中使用了MVC模式,分离了模型、视图和控制器,使得项目结构清晰易于扩展,感兴趣的可以了解一下
    2022-04-04
  • 使用阿里云OSS的服务端签名后直传功能的流程分析

    使用阿里云OSS的服务端签名后直传功能的流程分析

    这篇文章主要介绍了使用阿里云OSS的服务端签名后直传功能,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • Java中mkdir()和mkdirs()的区别及说明

    Java中mkdir()和mkdirs()的区别及说明

    这篇文章主要介绍了Java中mkdir()和mkdirs()的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • SpringBoot静态视频实时播放的实现代码

    SpringBoot静态视频实时播放的实现代码

    这篇文章主要介绍了SpringBoot静态视频实时播放的实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • Java并发编程之ReentrantLock可重入锁的实例代码

    Java并发编程之ReentrantLock可重入锁的实例代码

    这篇文章主要介绍了Java并发编程之ReentrantLock可重入锁的实例代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • 使用Java进行图像处理的一些基础操作

    使用Java进行图像处理的一些基础操作

    这篇文章主要介绍了使用Java进行图像处理的一些基础操作,就载入和输出相关的知识进行了讲解,需要的朋友可以参考下
    2015-10-10
  • Zookeeper实现分布式锁代码实例

    Zookeeper实现分布式锁代码实例

    这篇文章主要介绍了Zookeeper实现分布式锁代码实例,Zookeeper 分布式锁应用了其 临时顺序节点 的特性,在Zookeeper中创建一个持久节点ParentLock,当第一个客户端要获取锁时,在ParentLock节点下创建一个临时顺序节点,需要的朋友可以参考下
    2023-12-12
  • Spring Boot下如何自定义Repository中的DAO方法

    Spring Boot下如何自定义Repository中的DAO方法

    这篇文章主要介绍了Spring Boot下如何自定义Repository中的DAO方法,需要的朋友可以参考下
    2017-06-06
  • Java中堆和栈的区别详解

    Java中堆和栈的区别详解

    这篇文章主要介绍了Java中堆和栈的区别详解,所有的Java程序都运行在JVM虚拟机内部,我们这里介绍的自然是JVM(虚拟)内存中的堆和栈,需要的朋友可以参考下
    2015-01-01
  • Spring Boot web项目的TDD流程

    Spring Boot web项目的TDD流程

    TDD(Test-driven development) 测试驱动开发,简单点说就是编写测试,再编写代码。这是首要一条,不可动摇的一条,先写代码后写测试的都是假TDD。
    2021-05-05

最新评论