使用MybatisPlus自定义模版中能获取到的信息

MybatisPlus(简称MP)是一个基于Mybatis的增强工具库,可以大大简化Mybatis开发,提高开发效率。MP支持使用自定义模版来生成代码,通过自定义模版可以快速生成符合公司业务规范的代码,而且MP在模版中提供了很多变量,方便我们在模版中使用。

下面详细讲解在MP自定义模板中能够获取到的信息及使用方法:

1. 可以获取表的元数据信息

在自定义模版中可以通过${table}变量来获取表的元数据信息,包括表名、表注释、表的主键列信息、表的所有列信息。该变量是一个TableInfo类型的对象,该类型定义如下:

/**
 * 表信息
 * Created by liuzh on 2016/12/30.
 */
public class TableInfo {
    private String name; // 表名
    private String comment; // 表注释
    private String primaryKeyType; // 主键类型
    private String primaryKeyColumn; // 主键列名
    private boolean autoIncrement; // 是否自增列
    private List<ColumnInfo> columns; // 列信息
    // 省略getter和setter方法
}

ColumnInfo类型是表中列的元数据信息类型,定义如下:

/**
 * 列信息
 * Created by liuzh on 2016/12/30.
 */
public class ColumnInfo {
    private String name; // 列名
    private String type; // 数据类型
    private String comment; // 列注释
    private boolean primaryKey; // 是否主键
    private boolean autoIncrement; // 是否自增列
    // 省略getter和setter方法
}

通过${table}变量我们可以在模板中轻松获取到表的基本信息以及表的列信息,例如下面是获取表名和表注释的示例代码:

/**
 * 根据ID更新${table.comment}
 * Generator自动生成的代码,请勿修改
 */
<#-- 获取表名 -->
update ${table.name}
set
    <#-- 获取表注释 -->
    #if (table.comment)?has_content
    <!-- 非主键 更新时间 -->
    update_time = now() <#if table.columns?size != 2>,</#if>
    #end
    <#list table.columns as column>
        <#if !column.primaryKey && !column.autoIncrement>
            ${column.name} = #{${entity.camelName}.${column.camelName}}
            <#if column_has_next>,</#if>
        </#if>
    </#list>
where ${table.primaryKeyColumn} = #{${entity.camelName}.${table.primaryKeyColumn}}
</#if>

2. 可以获取当前模版生成代码的实体类信息

在自定义模版中可以通过${entity}变量来获取当前模板生成代码的实体类信息,包括实体类名、实体类注释、实体类所在包名等信息。该变量是一个Entity类型的对象,该类型定义如下:

/**
 * 实体信息
 * Created by liuzh on 2016/12/30.
 */
public class Entity {
    private String name; // 实体类名
    private String comment; // 实体类注释
    private String packageName; // 实体类所在包名
    private String camelName; // 实体类驼峰名称
    // 省略getter和setter方法
}

通过${entity}变量我们可以在模板中轻松获取到实体类的基本信息,例如下面是获取实体类所在的包及实体类注释的示例代码:

package ${entity.packageName};

import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

/**
 * ${entity.comment} 实体类
 * Generator自动生成的代码,请勿修改
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class ${entity.name} implements Serializable {
    private static final long serialVersionUID = 1L;

    // 省略实体类的属性声明
}

综上所述,MP自定义模版提供了丰富的变量信息,使得我们在模板中轻松获取到表的元数据信息及当前模板生成代码的实体类信息,并方便我们根据业务需求快速地生成符合规范的代码。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用MybatisPlus自定义模版中能获取到的信息 - Python技术站

(0)
上一篇 2023年6月15日
下一篇 2023年6月15日

相关文章

  • 深入浅析JDK8新特性之Lambda表达式

    深入浅析JDK8新特性之Lambda表达式 Lambda表达式概述 Lambda表达式是Java 8中非常重要的一个新特性,它允许我们以更简洁的方式编写匿名函数,从而提高代码的可读性和可维护性。Lambda表达式由参数、箭头符号和函数体组成,使用Lambda表达式可以将一段代码作为数据进行传递,使得代码更加灵活。 Lambda表达式常常与函数式编程一起使用,…

    Java 2023年5月26日
    00
  • Java Files和Paths的使用demo详解

    “Java Files和Paths的使用demo详解”是关于Java中文件和路径操作的教程,下面是完整攻略: 简介 Java中文件和路径操作是日常开发中非常常见的操作,通过Files和Paths类可以轻松地实现文件和路径的创建、删除、移动、复制以及读写等操作。本教程旨在讲解Java中如何使用Files和Paths类进行文件和路径操作。 Files 创建文件 …

    Java 2023年5月19日
    00
  • Spring实战之缓存使用condition操作示例

    让我来为您详细讲解“Spring实战之缓存使用condition操作示例”的完整攻略。 1. 背景介绍 Spring Cache是Spring框架的一项优秀功能,它能够优化应用程序的性能和响应时间。通过使用Spring Cache,您可以将方法结果缓存在内存中,并在需要时直接从内存中获取缓存结果,从而避免了在每次调用方法时执行相同的计算。 2. 基本原理 S…

    Java 2023年5月19日
    00
  • SpringBoot整合Freemarker实现页面静态化的详细步骤

    下面是详细的步骤: 1. 创建Spring Boot项目 可以使用Spring Boot官方提供的Spring Initializr快速生成一个基础项目。 2. 添加依赖 在pom.xml文件中添加Freemarker依赖: <dependency> <groupId>org.springframework.boot</grou…

    Java 2023年5月31日
    00
  • Java实现自定义阻塞队列

    Java实现自定义阻塞队列主要是基于Java多线程的特性和数据结构的知识进行设计和实现。下面详细讲解实现自定义阻塞队列的完整攻略: 1. 阻塞队列的概念 阻塞队列是一种特殊的队列,它在插入和删除操作时有一定的阻塞机制,以防止线程竞争带来的并发问题。常见的阻塞队列有ArrayBlockingQueue和LinkedBlockingQueue等。 2. Java…

    Java 2023年5月26日
    00
  • 详解Java的构造方法及类的初始化

    详解Java的构造方法及类的初始化 Java中的类可以通过定义构造方法来初始化对象的成员变量。本文将介绍Java的构造方法及类的初始化。 构造方法的定义 构造方法是一种特殊的方法,用于在创建对象时初始化对象的成员变量。它具有以下特点: 方法名称和类名称相同 没有返回值类型 可以有多个形参 可以有多个构造方法 以下是一个示例: public class Per…

    Java 2023年5月26日
    00
  • Sprint Boot @Size使用方法详解

    @Size是Spring Boot中的一个注解,用于标记一个字段或方法参数的长度必须在指定范围内。在本文中,我们将详细介绍@Size注解的作用和使用方法,并提供两个示例。 @Size注解的作用 @Size注解用于标记一个字段或方法参数的长度必须在指定范围内。当使用@Size注解标记一个字段或方法参数时,如果该字段或方法参数的长度不在指定范围内,则会抛出jav…

    Java 2023年5月5日
    00
  • Sprint Boot @TransactionalEventListener使用方法详解

    在Spring Boot中,@TransactionalEventListener注解用于在事务提交后异步地处理事件。使用@TransactionalEventListener注解可以确保事件处理程序在事务提交后才会执行,从而避免了在事务未提交时处理事件可能导致的问题。本文将详细介绍@TransactionalEventListener注解的作用和使用方法,…

    Java 2023年5月5日
    00
合作推广
合作推广
分享本页
返回顶部