zoukankan      html  css  js  c++  java
  • 字符数组数据映射转换到实体对象model注解方式 demo

    1.model对象

    public class UserModel {
        @ColumnAnnotation(index=0)
        private String username;
        @ColumnAnnotation(index=1)
        private String sex;
        @ColumnAnnotation(index=2)
        private String age;
        @ColumnAnnotation(index=3)
        private String address;
        
        
        @Override
        public String toString() {
            return "UserModel [username=" + username + ", sex=" + sex + ", age="
                    + age + ", address=" + address + "]";
        }
        public String getUsername() {
            return username;
        }
        public void setUsername(String username) {
            this.username = username;
        }
        public String getSex() {
            return sex;
        }
        public void setSex(String sex) {
            this.sex = sex;
        }
        public String getAge() {
            return age;
        }
        public void setAge(String age) {
            this.age = age;
        }
        public String getAddress() {
            return address;
        }
        public void setAddress(String address) {
            this.address = address;
        }
        
    }

    2.注解

    @Target(ElementType.FIELD)
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    public @interface ColumnAnnotation {
        /**
         * 下标
         */
        int index();
    
    }

    3.工具类

    public class IBeanUtils<T> {
    
        public T fieldSet(T t, String[] dataArray) throws IllegalAccessException {
    
            if (null == dataArray || dataArray.length == 0) {
                return t;
            }
    
            Field[] thisFields = t.getClass().getDeclaredFields();
    
            for (Field f : thisFields) {
                if (f == null) {
                    continue;
                }
                if (f.isAnnotationPresent(ColumnAnnotation.class)) {
                    ColumnAnnotation columnAnnotation = f.getAnnotation(ColumnAnnotation.class);
                    if (columnAnnotation.index() < dataArray.length) {
                        //赋值
                        setVal(t, f, dataArray[columnAnnotation.index()]);
                    }
                }
            }
            return t;
        }
    
        private void setVal(T t, Field f, String data) throws IllegalAccessException {
               f.setAccessible(true);
               f.set(t, data);
        }
    
    
        public static void main(String[] args) throws IllegalAccessException {
            String[] dataArray = {"liudehua", "男", "55", "香港","other"};
            UserModel model = new IBeanUtils<UserModel>().fieldSet(new UserModel(), dataArray);
            System.out.println(model.toString());
        }
    
    }
  • 相关阅读:
    Windows ETW 学习与使用三
    暗云Ⅳ对SATA磁盘MBR Hook探索
    msahci代码调试备份
    mimikatz使用命令记录
    Windows ETW 学习与使用一
    RabbitMQ 实现延迟队列
    Redis 脱坑指南
    浅析 ThreadLocal
    IDEA2020.2.3破解
    用友NC 模块 简写(瞎猜的)
  • 原文地址:https://www.cnblogs.com/oktokeep/p/13228275.html
Copyright © 2011-2022 走看看