Java如何获取@TableField,@TableName注解的值

网友投稿 758 2022-09-03


Java如何获取@TableField,@TableName注解的值

目录如何获取@TableField,@TableName注解的值操作方式小结一下@TableName和@TableId爆红加入pom依赖

如何获取@TableField,@TableName注解的值

总觉得写博客要形成自己的风格才行,不能像记流水http://账一样记录,比如文章有开头,过程,结尾,总结。虽说文章的好坏,跟排版无关,但是至少看得人看的舒服。所以说,要有自己的风格、比如,文章是为了记录什么,解决什么,学到了什么,总结之后给别人帮助。这才是挺有意思的一件事。

不多说,上菜。

有这么一个需求,程序中修改资料,或者代码里面需要修改到表的时候,不想通过多张日志表去记录说修改了什么,那么我定义一张表,存储表名,表字段,再存储修改的值这些。虽然说后期如果有需求要还原数据比较麻烦,但是统一处理了数据,也不会需要定义那么多张表。

操作方式

定义一个实体类

@TableName("uc_cust_lock")

public class CustLock {

/**

* 标识

*/

@TableId

@TableField("cust_lock_id")

prihttp://vate String custLockId;

/**

* 经纪人id

*/

@Tablehttp://Field("broker_user_id")

private String brokerUserId;

/**

* 组织id(经纪人所属组织id)

*/

@TableField("org_id")

private String orgId;

// get,set...省略

}

获取类的信息

// 引入的Jar包

// import com.baomidou.mybatisplus.annotation.TableField;

// import com.baomidou.mybatisplus.annotation.TableId;

// import com.baomidou.mybatisplus.annotation.TableName;

// import java.lang.reflect.Field;

private static void getProxyPojoValue(Object object, Set key1){

String id = null;

// 返回参数

HashMap hashMap = new HashMap<>(16);

for (String s : key1) {

Field[] fields = object.getClass().getDeclaredFields();

for (Field field : fields) {

field.setAccessible(true);

// 获取表名

TableName table = object.getClass().getAnnotation(TableName.class);

if (table != null) {

String tableName = table.value();

hashMap.putIfAbsent("tableName", tableName);

}

// 获取主键id

if (id == null) {

boolean isIdField = field.isAnnotationPresent(TableId.class);

if (isIdField) {

TableField tableField = field.getAnnotation(TableField.class);

if (s.toLowerCase().equals(field.getName().toLowerCase())) {

String tableId = tableField.value();

hashMap.put(s,tableId);

id = tableId;

}

}

}

// 获取字段的值

boolean isTableField = field.isAnnotationPresent(TableField.class);

if (isTableField) {

TableField tableField = field.getAnnotation(TableField.class);

if (s.toLowerCase().equals(field.getName().toLowerCase())) {

String fieldValue = tableField.value();

hashMap.put(s,fieldValue);

}

}

}

}

System.out.println(hashMap);

}

Main方法执行

public static void main(String[] args) throws IllegalAccessException {

Set key1= new HashSet<>();

// 定义修改的值(后期可做成动态)

key1.add("brokerUserId");

// 定义主键id

key1.add("custlockid");

getProxyPojoValue(new CustLock(),key1);

}

// 结果:

// {custlockid=cust_lock_id, brokerUserId=broker_user_id, tableName=uc_cust_lock}

小结一下

通过getDeclaredFields,getAnnotation这两个主要关键类去获取对应的信息。

@TableName和@TableId爆红

加入pom依赖

com.baomidou

mybatis-plus-boot-starter

3.2.0


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:如何在python同一应用下的多模块中共享变量(python多模块之间调用)
下一篇:(续) python 中 ctypes 的使用尝试(续贷声明)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~