字符数组数据映射转换到实体对象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());
    }

}

 

posted on 2020-07-03 08:49  oktokeep  阅读(596)  评论(0编辑  收藏  举报