mybatis-generator如何自定义注释生成

yizhihongxing

自定义注释可以让生成的代码更加规范化和具有可读性,MyBatis Generator提供了多个配置选项来实现自定义注释。下面详细讲解如何自定义注释生成的完整攻略:

1. 在generatorConfig.xml配置文件中添加注释生成配置

在generatorConfig.xml文件中,可以通过添加count和commentGenerator两个节点来实现注释生成的配置。

<!-- 指定注释生成器 -->
<commentGenerator type="org.mybatis.generator.internal.DefaultCommentGenerator">
    <!-- 是否生成日期 -->
    <property name="suppressDate" value="true"/>

    <!-- 是否生成注释 -->
    <property name="suppressAllComments" value="false"/>

    <!-- 注释中是否生成数据库中列名 -->
    <property name="columnRemarks" value="true"/>
</commentGenerator>

在commentGenerator节点内部,type指定了注释生成器的全路径的类名,suppressDate标记控制是否在注释中生成日期,suppressAllComments标记控制是否生成所有注释,columnRemarks标记控制是否在注释中生成数据库中列名。

除了注释生成器之外,还可以通过添加count节点来指定是否生成表的行数,示例代码如下:

<table tableName="user">
    <generatedKey column="id" sqlStatement="MySql" identity="true"/>
    <columnOverride column="password" javaType="String" jdbcType="CHAR"/>
    <columnOverride column="delete_flag" javaType="Integer" jdbcType="TINYINT"/>
    <ignoreColumn column="create_time"/>
    <ignoreColumn column="update_time"/>

    <!-- 生成行数 -->
    <countColumn tableName="user" columnName="id" />
</table>

count节点中的tableName属性指定要生成行数的表名,columnName属性指定表中的哪个列用于计算行数。

2. 在DefaultCommentGenerator中自定义注释模板

MyBatis Generator默认使用DefaultCommentGenerator来生成注释,我们可以自定义注释模板来生成符合自己需求的注释信息。具体做法如下:

首先,需要继承DefaultCommentGenerator并重写以下方法:

public class CustomCommentGenerator extends DefaultCommentGenerator {
    @Override
    public void addFieldComment(Field field, IntrospectedTable introspectedTable, IntrospectedColumn introspectedColumn) {
        super.addFieldComment(field, introspectedTable, introspectedColumn);
    }

    @Override
    public void addGetterComment(Method method, IntrospectedTable introspectedTable, IntrospectedColumn introspectedColumn) {
        super.addGetterComment(method, introspectedTable, introspectedColumn);
    }

    @Override
    public void addSetterComment(Method method, IntrospectedTable introspectedTable, IntrospectedColumn introspectedColumn) {
        super.addSetterComment(method, introspectedTable, introspectedColumn);
    }
}

其次,需要在generatorConfig.xml文件中指定注释生成器为自定义生成器:

<commentGenerator type="com.example.CustomCommentGenerator">
    ...
</commentGenerator>

最后,可以在自定义注释生成方法中,使用introspectedTable和introspectedColumn两个对象获取表和列信息,并在注释中使用这些信息展示自己想要的信息。下面是一个例子:

public class CustomCommentGenerator extends DefaultCommentGenerator {
    @Override
    public void addFieldComment(Field field, IntrospectedTable introspectedTable, IntrospectedColumn introspectedColumn) {
        StringBuilder sb = new StringBuilder();
        field.addJavaDocLine("/**");
        sb.append(" * ").append(introspectedTable.getFullyQualifiedTable()).append(".").append(introspectedColumn.getActualColumnName());
        sb.append(": ").append(introspectedColumn.getRemarks());
        field.addJavaDocLine(sb.toString());
        field.addJavaDocLine(" */");
    }
}

在上面的例子中,我们通过introspectedTable和introspectedColumn对象,获取了表名,列名和列备注,然后将这些信息组装成注释添加到了字段上。可以看到,在自定义注释生成方法中,可以完全自由地组合想要展示的信息,实现注释的高度可读性和规范性。

综上所述,通过配置generatorConfig.xml文件,以及自定义注释生成器可以实现自定义注释生成。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:mybatis-generator如何自定义注释生成 - Python技术站

(0)
上一篇 2023年5月21日
下一篇 2023年5月21日

相关文章

  • 深入sql多表差异化联合查询的问题详解

    深入 SQL 多表差异化联合查询的问题详解 在实际开发中,经常会遇到需要对多个数据表进行联合查询的情况,而且多表之间的联合查询还可能存在差异化的要求。下面将详细讲解如何进行深入的 SQL 操作来解决这种问题。 基本语法 SQL 的联合查询基本语法如下: SELECT column1, column2, … FROM table1 UNION [ALL |…

    database 2023年5月22日
    00
  • Mysql数据库函数之函数的用法小结

    下面是Mysql数据库函数之函数的用法小结的详细攻略: 第一部分:Mysql数据库函数 Mysql数据库函数是Mysql数据库提供的一些专门用于处理数据的函数,这些函数可以用来处理和转换数据,或者可以帮助我们优化代码的执行效率。 第二部分:常见的函数及其用法 1. 字符串函数 concat(): 将多个字符串合并成一个字符串 substr(): 取出指定字符…

    database 2023年5月22日
    00
  • Redis数据导入导出以及数据迁移的4种方法详解

    关于Redis数据导入导出以及数据迁移的4种方法详解,我来给你详细讲解一下。 1. Redis数据导入导出 Redis提供了2种导入导出数据的方式,分别是RDB快照和AOF文件。 RDB快照 RDB快照是Redis的一种备份机制,可以将当前内存中的数据保存到磁盘上的一个RDB文件中。它的优点是导出速度非常快,并且文件体积相对较小,适合搭建冷备份。 导出RDB…

    database 2023年5月22日
    00
  • Redis 密码设置和查看密码

      redis没有实现访问控制这个功能,但是它提供了一个轻量级的认证方式,可以编辑redis.conf配置来启用认证。    1、初始化Redis密码:    在配置文件中有个参数: requirepass  这个就是配置redis访问密码的参数;    比如 requirepass 123456;    (Ps:需重启Redis才能生效)    redis…

    Redis 2023年4月12日
    00
  • SQL 使用SQL Server的UNPIVOT操作符逆向转换交叉报表

    SQL Server的UNPIVOT操作符是一种将交叉报表数据逆向转换为普通表格数据的方法。UNPIVOT操作符可以将列转换为行,使得交叉报表数据更容易分析和处理。下面将详细讲解如何使用SQL Server的UNPIVOT操作符进行逆向转换交叉报表,并给出两个实例说明。 一、UNPIVOT操作符概述 UNPIVOT操作符通过将列转换为行的方式,将交叉报表数据…

    database 2023年3月27日
    00
  • 【django后端分离】Django Rest Framework之认证系统之redis数据库的token认证(token过期时间)

    1:登录视图 redis_cli.py文件:          import redis          Pool= redis.ConnectionPool(host=’localhost’,port=6379,decode_responses=True)登录视图文件:import redisfrom utils.redis_cli import Poo…

    Redis 2023年4月13日
    00
  • mysql 数据插入优化方法之concurrent_insert

    MySQL 数据插入优化方法之 concurrent_insert concurrent_insert 是 MySQL 数据插入优化的一种方法。它可以通过将新的索引插入页分离(FSP)空闲列表,从而在插入新记录时提高并发性能。 concurrent_insert 参数设置 concurrent_insert 有三个可选参数: OFF: 禁用此功能(默认值);…

    database 2023年5月19日
    00
  • MySQL MyISAM存储引擎详解

    MySQL的存储引擎是MySQL的一种优秀的技术,其中MyISAM是其最基本的存储引擎。MyISAM是MySQL支持的一种基于表的存储引擎,它支持高效的读取和快速的键值查找,并允许使用大型数据表。下面我们将详细解释MyISAM存储引擎的具体特点和使用方法。 索引类型 MyISAM支持B-tree索引,这种索引类型非常适合于一些快速的查找操作。B-tree索引…

    MySQL 2023年3月9日
    00
合作推广
合作推广
分享本页
返回顶部