JAVA11注解处理器(Annotation Processor)的简单应用

本文介绍了如何使用Java11的注解处理器(Annotation Processor)自动生成字段映射。通过创建自定义注解@TableEntity,以及相应的注解处理器TableEntityProcessor,实现了在编译时根据PO类的字段动态生成columnNames()方法,将驼峰命名转换为下划线,提高代码一致性。文章详细讲解了创建注解、处理器和配置Maven的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在阅读以前的代码时发现Mybatis的映射文件中需要写一个表的列集合,既然PO层已经定义了表对应的实体,不如根据po类的字段自动生成列集合,映射的xml中直接调用,也能保证字段的一致性,注解处理器自然成了第一选择,开撸。

新建一个自定义注解TableEntity

import java.lang.annotation.*;

@Documented
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.SOURCE)
public @interface TableEntity {
}

新建一个Person类并添加@TableEntity注解

@TableEntity
public class Person {

  private int id;
  private String name;
  private String createTime;

}

我希望Person类在编译后新增一个columnNames()方法,返回值是该类的字段名称,并将驼峰转成下划线,如下所示

public String columnNames() {
  return "id,name,create_time";
}

接下来需要我们自行编写注解处理器来生成columnNames()方法,这需要用到java抽象语法树(AST),下图为java11

直接调用会报错,需要手动引用一下,IDEA只要我们输入完整包名路径就可以帮我们自动生成引用,如下所示

 

新建@TableEntity的注解处理器TableEntityProcessor

新建注解处理器之前的我们需要加一个maven依赖,因为注解器在使用时需要我们在resource文件夹下的META-INF.services文件夹下,新建一个叫做javax.annotation.processing.Processor的文件,具体操作可以自行查询相关知识,引入这个依赖帮我们可以节省这一步操作

<depe
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值