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技术站