今天小编给大家分享一下Java怎么获取@TableField,@TableName注解的值的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
总觉得写博客要形成自己的风格才行,不能像记流水账一样记录,比如文章有开头,过程,结尾,总结。虽说文章的好坏,跟排版无关,但是至少看得人看的舒服。所以说,要有自己的风格、比如,文章是为了记录什么,解决什么,学到了什么,总结之后给别人帮助。这才是挺有意思的一件事。
不多说,上菜。
有这么一个需求,程序中修改资料,或者代码里面需要修改到表的时候,不想通过多张日志表去记录说修改了什么,那么我定义一张表,存储表名,表字段,再存储修改的值这些。虽然说后期如果有需求要还原数据比较麻烦,但是统一处理了数据,也不会需要定义那么多张表。
定义一个实体类
@TableName("uc_cust_lock")
public class CustLock {
/**
* 标识
*/
@TableId
@TableField("cust_lock_id")
private String custLockId;
/**
* 经纪人id
*/
@TableField("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<String> key1){
String id = null;
// 返回参数
HashMap<String,Object> 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<String> 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这两个主要关键类去获取对应的信息。
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.2.0</version>
</dependency>
以上就是“Java怎么获取@TableField,@TableName注解的值”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注亿速云行业资讯频道。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。