Java怎么获取@TableField,@TableName注解的值
今天小编给大家分享一下Java怎么获取@TableField,@TableName注解的值的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
如何获取@TableField,@TableName注解的值
总觉得写博客要形成自己的风格才行,不能像记流水账一样记录,比如文章有开头,过程,结尾,总结。虽说文章的好坏,跟排版无关,但是至少看得人看的舒服。所以说,要有自己的风格、比如,文章是为了记录什么,解决什么,学到了什么,总结之后给别人帮助。这才是挺有意思的一件事。
不多说,上菜。
有这么一个需求,程序中修改资料,或者代码里面需要修改到表的时候,不想通过多张日志表去记录说修改了什么,那么我定义一张表,存储表名,表字段,再存储修改的值这些。虽然说后期如果有需求要还原数据比较麻烦,但是统一处理了数据,也不会需要定义那么多张表。
操作方式
定义一个实体类
@TableName("uc_cust_lock")public class CustLock { @TableId @TableField("cust_lock_id") private String custLockId; @TableField("broker_user_id") private String brokerUserId; @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这两个主要关键类去获取对应的信息。
@TableName和@TableId爆红
加入pom依赖
<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.2.0</version> </dependency>
以上就是“Java怎么获取@TableField,@TableName注解的值”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网行业资讯频道。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341