千家信息网

Java怎么获取@TableField,@TableName注解的值

发表于:2024-10-21 作者:千家信息网编辑
千家信息网最后更新 2024年10月21日,今天小编给大家分享一下Java怎么获取@TableField,@TableName注解的值的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家
千家信息网最后更新 2024年10月21日Java怎么获取@TableField,@TableName注解的值

今天小编给大家分享一下Java怎么获取@TableField,@TableName注解的值的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

如何获取@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 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        

以上就是"Java怎么获取@TableField,@TableName注解的值"这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。

0