Springboot mybatis generate 自动生成实体类和Mapper

这篇具有很好参考价值的文章主要介绍了Springboot mybatis generate 自动生成实体类和Mapper。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Springboot mybatis generate 自动生成实体类和Mapper

一、运行

运行MyBatisGeneratorApp类即可实现自动生成实体类、mapper接口、mapper.xml
mybatis自动生成实体类,java,mybatis,spring boot,java文章来源地址https://www.toymoban.com/news/detail-708234.html

二、配置步骤

1、pom文件引入依赖
<!-- MyBatis -->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.3.2</version>
</dependency>

<!-- MyBatis Generator -->
<dependency>
    <groupId>org.mybatis.generator</groupId>
    <artifactId>mybatis-generator-core</artifactId>
    <version>1.3.5</version>
</dependency>

<!-- Lombok -->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.20</version>
    <scope>provided</scope>
</dependency>

<!-- Mysql -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.47</version>
</dependency>
2、自定义 lombok 插件类 LombokPlugin.java
package com.example.autoentity.utils;

import org.mybatis.generator.api.IntrospectedColumn;
import org.mybatis.generator.api.IntrospectedTable;
import org.mybatis.generator.api.PluginAdapter;
import org.mybatis.generator.api.dom.java.Field;
import org.mybatis.generator.api.dom.java.Interface;
import org.mybatis.generator.api.dom.java.Method;
import org.mybatis.generator.api.dom.java.TopLevelClass;
import org.mybatis.generator.internal.util.StringUtility;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

/**

 * @Author: haoyun
 * @Date: 2023-06-14 09:49
 * @Description: 自定义lombok类
   */

public class LombokPlugin extends PluginAdapter {
@Override
public boolean validate(List<String> list) {
    return true;
}

/**
 * 为实体添加lombok的注解
 * @param topLevelClass
 * @param introspectedTable
 * @return
 */
@Override
public boolean modelBaseRecordClassGenerated(TopLevelClass topLevelClass, IntrospectedTable introspectedTable) {
    //添加domain的import
    topLevelClass.addImportedType("lombok.Data");
    topLevelClass.addImportedType("lombok.Builder");
    topLevelClass.addImportedType("lombok.NoArgsConstructor");
    topLevelClass.addImportedType("lombok.AllArgsConstructor");

    //添加domain的注解
    topLevelClass.addAnnotation("@Data");
    topLevelClass.addAnnotation("@Builder");
    topLevelClass.addAnnotation("@NoArgsConstructor");
    topLevelClass.addAnnotation("@AllArgsConstructor");

    //添加domain的注释
    topLevelClass.addJavaDocLine("/**");
    topLevelClass.addJavaDocLine("* Created by Mybatis Generator on " + date2Str(new Date()));
    topLevelClass.addJavaDocLine("*/");

    return true;
}

/**
 * 为实体类字段添加注释
 * @param field
 * @param topLevelClass
 * @param introspectedColumn
 * @param introspectedTable
 * @param modelClassType
 * @return
 */
@Override
public boolean modelFieldGenerated(Field field, TopLevelClass topLevelClass, IntrospectedColumn introspectedColumn, IntrospectedTable introspectedTable, ModelClassType modelClassType) {
    field.addJavaDocLine("/**");
    String remarks = introspectedColumn.getRemarks();
    if (StringUtility.stringHasValue(remarks)) {
        String[] remarkLines = remarks.split(System.getProperty("line.separator"));
        for (String remarkLine : remarkLines) {
            field.addJavaDocLine(" * " + remarkLine);
        }
    }
    field.addJavaDocLine(" */");
    return true;

}

/**
 * mapper.xml的注释
 * @param interfaze
 * @param topLevelClass
 * @param introspectedTable
 * @return
 */
@Override
public boolean clientGenerated(Interface interfaze, TopLevelClass topLevelClass, IntrospectedTable introspectedTable) {
    //Mapper文件的注释
    interfaze.addJavaDocLine("/**");
    interfaze.addJavaDocLine("* Created by Mybatis Generator on " + date2Str(new Date()));
    interfaze.addJavaDocLine("*/");
    return true;
}

@Override
public boolean modelSetterMethodGenerated(Method method, TopLevelClass topLevelClass, IntrospectedColumn introspectedColumn, IntrospectedTable introspectedTable, ModelClassType modelClassType) {
    //不生成getter
    return false;
}

@Override
public boolean modelGetterMethodGenerated(Method method, TopLevelClass topLevelClass, IntrospectedColumn introspectedColumn, IntrospectedTable introspectedTable, ModelClassType modelClassType) {
    //不生成setter
    return false;
}

private String date2Str(Date date) {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
    return sdf.format(date);
}
}
3、添加 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>
    <context id="default" targetRuntime="MyBatis3">

        <property name="autoDelimitKeywords" value="true" />
        <!-- 生成的Java文件的编码 -->
        <property name="javaFileEncoding" value="utf-8" />
        <!-- beginningDelimiter和endingDelimiter:指明数据库的用于标记数据库对象名的符号,比如ORACLE就是双引号,MYSQL默认是`反引号; -->
        <property name="beginningDelimiter" value="`" />
        <property name="endingDelimiter" value="`" />

        <!-- 格式化java代码 -->
        <property name="javaFormatter" value="org.mybatis.generator.api.dom.DefaultJavaFormatter"/>
        <!-- 格式化XML代码 -->
        <property name="xmlFormatter" value="org.mybatis.generator.api.dom.DefaultXmlFormatter"/>
        <plugin type="org.mybatis.generator.plugins.SerializablePlugin" />

        <plugin type="org.mybatis.generator.plugins.ToStringPlugin" />

        <!--lombok 自动生成lombok注解配置和根据数据库注释为实体添加注释, 需要自己编译文件才可以实现-->
        <plugin type="com.example.autoentity.utils.LombokPlugin"/>
        
        <commentGenerator>
            <!-- 是否去除自动生成的注释 true:是 : false:否 -->
            <property name="suppressAllComments" value="true"/><!-- 是否取消注释 -->
            <property name="suppressDate" value="true" /> <!-- 是否生成注释代时间戳-->
            <!-- 注解采用数据库的标注,suppressAllComments 必须设置为 false 才会生效 -->
            <property name="addRemarkComments" value="true"/>
        </commentGenerator>

        <!-- 配置数据库连接信息 -->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://ip:port/rjwm"
                        userId="root"
                        password="password"/>

        <!-- 配置实体类生成规则 -->
        <javaModelGenerator targetPackage="com.example.autoentity.entity"
                            targetProject="src/main/java">
            <property name="enableSubPackages" value="false"/>
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>

        <!-- 配置映射文件生成规则 -->
        <sqlMapGenerator targetPackage="mapper"
                         targetProject="src/main/resources"/>

        <!-- 配置 DAO 接口生成规则 -->
        <javaClientGenerator type="XMLMAPPER"
                             targetPackage="com.example.autoentity.employee.mapper"
                             targetProject="src/main/java"/>

        <!-- 配置数据库表和实体类的映射关系 -->
        <table tableName="user" domainObjectName="User"/>

    </context>
</generatorConfiguration>
4、Generator 启动类 MyBatisGeneratorApp.java
package com.example.autoentity.utils;

import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.exception.InvalidConfigurationException;
import org.mybatis.generator.exception.XMLParserException;
import org.mybatis.generator.internal.DefaultShellCallback;

import java.io.File;
import java.io.IOException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class MyBatisGeneratorApp {

    public static void main(String[] args) {
        try {
            List<String> warnings = new ArrayList<>();
            boolean overwrite = true;
            File configFile = new File("C:\\autoentity\\src\\main\\resources\\MyBatis-Generator\\generatorConfig.xml");
            ConfigurationParser cp = new ConfigurationParser(warnings);
            Configuration config = cp.parseConfiguration(configFile);
            DefaultShellCallback callback = new DefaultShellCallback(overwrite);

            MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
            myBatisGenerator.generate(null);

            System.out.println("Entity classes generated successfully!");
        } catch (IOException | XMLParserException | InvalidConfigurationException | SQLException | InterruptedException e) {
            e.printStackTrace();
        }
    }
}

到了这里,关于Springboot mybatis generate 自动生成实体类和Mapper的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 自动化生成代码:MyBatis 的 Generator与MyBatis-Plus 的 AutoGenerator

    自动化生成代码是现在一种非常常见的技术,它可以大大提高开发效率,减少重复劳动。而在 Java 开发中,MyBatis 是一个非常流行的 ORM 框架,而其中的 Generator 和 MyBatis-Plus 中的 AutoGenerator 是两个非常好用的自动化代码生成工具,下面我们来分别介绍一下它们的使用。 MyBati

    2024年02月03日
    浏览(44)
  • 【重要】springboot实战(六)之mybatis-plus代码自动生成器

    目录 环境: 步骤: 1.添加依赖 2.配置代码 3.运行 测试 1.测试生成的service 1.1、service用法 2.分页查询 2.1、分页插件配置  2.2、测试 3.源码 jdk:1.8 springboot版本:2.7.15 mybatis-plus版本:3.5.1以上 (本文章用的当前最新版本:3.5.3.2,代码适用于3.5.1版本以上的版本) 在测试类中创建

    2024年02月03日
    浏览(48)
  • 【企业级SpringBoot单体项目模板 】——Mybatis-plus自动代码生成

    😜 作           者 :是江迪呀 ✒️ 本文 : SpringBoot项目模版 、 企业级 、 模版 ☀️ 每日   一言 : 我们之所以这样认为,是因为他们这样说。他们之所以那样说,是因为他们想让我们那样认为。所以实践才是检验真理的唯一准则。 上回 我们说了一些开发规范

    2024年02月07日
    浏览(55)
  • Javascript——生成器(Generator)自动执行

    Generator自动化是通过Thunk函数进行实现,写这篇文章的目的是为了理解通过Thunk实现Generator函数的自动执行。 我们可以带入一个业务场景来帮助我们理解Thunk实现Generator自动执行的好处,业务场景如下: 假设小明今天干了一件事情是:         1、买菜         2、买完菜回家

    2024年03月25日
    浏览(101)
  • Hibernate根据实体类自动生成表的方法

    这种方法需要配置 hibernate.cfg.xml 的属性 hibernate.hbm2ddl.auto ,该属性值的具体说明如下: 值 说明 update 实体对应的表如果不存在则会创建。如果实体中新增加了字段,会在相应的表中增加一列 create 每次启动 Hibernate 都会创建表。在 Hiberante 启动时,会先删除实体对应的表,然

    2023年04月24日
    浏览(49)
  • idea 实体类的.set属性方法自动生成

    GenerateAllSetter插件: 开放过程中有的实体类属性很多。一个一个去写.set方法。重复性强还容易遗漏。这个时候就可以使用GenerateAllSetter插件 使用方法 鼠标放在变量【e】上。按下Alt + Enter组合键 弹窗如下。就可以根据需要选择了

    2024年01月23日
    浏览(70)
  • 使用flask-sqlacodegen自动生成model实体类

    依赖库版本如下(供参考): 安装依赖库 pip install -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com sqlalchemy==1.4.36 pip install -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com flask-sqlalchemy==3.0.3 pip install -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com flas

    2024年02月15日
    浏览(47)
  • IDEA通过数据库表自动生成实体类(EasyCode)

    一个表,一百多个字段,实体类属实给我整的头皮发麻。后来同事推荐了个IDEA自动生成实体类插件,真香啊~ 开整 打开idea-》File-》Settings-》Plugins-》搜索EasyCode-》然后Install 如果不配置的话使用的是它的默认模板,我需要使用 lombok 和 swagger ;所以自己配置了一个模板。 打开

    2024年02月05日
    浏览(90)
  • java请求SAP系统,发起soap的xml报文,实体类转换,idea自动生成教程

    1、将接口的网页地址,右键保存,然后修改文件后缀为wsdl文件 2、idea全局搜索 wsdl,找到自动转换javabean插件: 3、点击后,选择下载改完后缀的文件(选择):      4、将无用的class文件删除掉 5、请求sap的地址为:最下边有两个地址,http和https的,请求地址为http的,后缀改一

    2024年02月12日
    浏览(38)
  • 【IDEA使用指南】使用Hibernate框架的Java项目,如何通过数据库表自动生成实体模型?

    步骤1:找到并打开“Persistence”工具栏。 如下图所示,找到 “View - Tool Windows - Persistence”,点击“Persistence”。 步骤2:找到并打开“Import Database Schema” 窗口。 在开发工具左下角会弹出持久化配置的工具栏“Persistence”,如下图所示。单击之后有一个弹框,找到弹框中的项

    2024年02月05日
    浏览(65)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包