使用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日

相关文章

  • Java BufferWriter写文件写不进去或缺失数据的解决

    下面是Java BufferWriter写文件写不进去或缺失数据的解决攻略。 问题描述 在使用Java中的BufferWriter写文件时,有时会遇到写不进去或者缺失数据的问题。这是由于BufferWriter是先将数据写入缓冲区,等到缓冲区满了或者我们手动调用flush()方法后,才会将缓冲区中的数据刷新到磁盘中。如果我们在写完数据后没有手动调用flush…

    Java 2023年5月19日
    00
  • MyBatis框架简介及入门案例详解

    MyBatis框架简介及入门案例详解 MyBatis框架简介 MyBatis是一个持久层框架,它支持定制化SQL、存储过程和高级映射。MyBatis消除了几乎所有的JDBC代码和参数的手工输入以及对结果集的检索封装。MyBatis可以采用注解或xml方式配置映射关系,支持动态SQL,极其灵活方便。 MyBatis入门案例 准备工作 1.创建一个Java We…

    Java 2023年5月20日
    00
  • JavaSpringBoot报错“BeanCreationException”的原因和处理方法

    原因 “BeanCreationException” 错误通常是以下原因引起的: 依赖项问题:如果您的代码中存在依赖项问题,则可能会出现此错误。在这种情况下,您需要检查您的依赖项并确保它们正确。 配置问题:如果您的配置不正确,则可能会出现此错误。在这种情况下,您需要检查您的配置并确保它们正确。 解决办法 以下是解决 “BeanCreationExceptio…

    Java 2023年5月4日
    00
  • Java切割字符串的踩坑实战记录

    下面是“Java切割字符串的踩坑实战记录”的完整攻略。 1. 问题背景 在Java的字符串处理中,切割字符串(即从原字符串中提取一部分作为新的字符串)是很常见的操作。常用的切割字符串的方法包括split()、substring()和StringTokenizer等。然而,在实际开发过程中,我们常常会遇到一些踩坑情况,导致程序出现异常,或者得到错误的结果。 本…

    Java 2023年5月27日
    00
  • jsp内置对象及方法详细介绍

    下面我就来详细讲解一下”JSP内置对象及方法详细介绍”。 JSP内置对象 JSP内置对象是JSP容器在JSP页面执行期间自动创建的一些对象,可以用于在JSP页面中实现不同的功能。JSP内置对象一共有9个:request、response、pageContext、session、application、out、config、exception、page 。 在…

    Java 2023年6月15日
    00
  • JSP针对表单重复提交的处理方法

    JSP针对表单重复提交的处理方法包括以下几步: 1.在提交表单的jsp页面中添加一个隐藏域,用于标识表单是否已经提交过。例如: <form method="post" action="submit.jsp"> <input type="hidden" name="subm…

    Java 2023年6月15日
    00
  • Android基于socket实现的简单C/S聊天通信功能

    实现Android基于socket的C/S聊天通信功能,可以分成如下几个步骤: 1. 建立Server端 使用Java的ServerSocket类创建Server端。 在Server端运行一个死循环,等待Client发来连接请求(使用Socket类进行连接)。 接收Client发送的消息,处理并返回数据给Client。 下面是一个Java Server端的示…

    Java 2023年5月23日
    00
  • 什么是内存管理?

    以下是关于内存管理的完整使用攻略: 什么是内存管理? 内存管理是指操作系统或程序运行时如何管理计算机的内存资源。内存管理的主要任务包括内存分配、内存回收、内存保护和内存优化等。 内存管理的示例1:内存分配 例如,以下是一个使用C语言进行内存分配的示例: int *p = (int*)malloc(sizeof(int)); 该代码会在内存中分配一个整型变量所…

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