Java实体类属性的循环赋值

时间:2025-04-06 14:09:27

常规向:

通过反射的操作,先循环遍历实体类中的全部属性,再通过字符串拼接方法将首字母改为大写并与"set"合并,通过invoke方法进行赋值

代码如下

Test test=new Test();
        //给test对象赋值
        for(int i=0;i<;i++){
            //获取属相名
            String attributeName=f[i].getName();
            //将属性名的首字母变为大写,为执行set/get方法做准备
            String methodName=(0,1).toUpperCase()+(1);
            try{
                //获取Test类当前属性的setXXX方法(私有和公有方法)
                /*Method setMethod=("set"+methodName);*/
                //获取Test类当前属性的setXXX方法(只能获取公有方法)
                Method setMethod=("set"+methodName,);
                //执行该set方法
                (test,attributeName+"方法赋值");
            }catch (NoSuchMethodException e) {
                try {
                    Method setMethod=("set"+methodName,);
                    (test,123);
                } catch (Exception e2) {
                    f[i].set(test,attributeName+"直接赋值");
                }

            }

        }  

整活向:
        通过在实体类中新增一个Object类数组完成循环赋值,新增一个包含数组的构造器

代码如下

public class User {
    private String username;
    private String password;
    private String UID;
    private String true_name;
    private String gender;
    private Timestamp register_date;
    private int level;
    private int has_done;
    private double balance;
    private String department;
    private String phonenumber;
    private Date born_date;
    private boolean isAdmin;

    private Object[] object=new Object[13];

    public User(){}

    public User(Object[] objects){
         = (String)objects[0];
         = (String)objects[1];
         = (String)objects[2];
        this.true_name = (String)objects[3];
         = (String)objects[4];
        this.register_date = (Timestamp) objects[5];
         = (int)objects[6];
        this.has_done = (int) objects[7];
         = (double) objects[8];
         = (String) objects[9];
         = (String) objects[10];
        this.born_date = (Date) objects[11];
         = (boolean)objects[12];
        =objects;
    }

    public User(String username, String password, String UID, String true_name, String gender, Timestamp register_date, int level, int has_done, double balance, String department, String phonenumber, Date born_date, boolean isAdmin) {
        [0]= = username;
        [1]= = password;
        [2]= = UID;
        [3]=this.true_name = true_name;
        [4]= = gender;
        [5]=this.register_date = register_date;
        [6]= = level;
        [7]=this.has_done = has_done;
        [8]= = balance;
        [9]= = department;
        [10]= = phonenumber;
        [11]=this.born_date = born_date;
        [12]= = isAdmin;
    }

public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        object[0]= = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        object[1]= = password;
    }

    public String getUID() {
        return UID;
    }

    public void setUID(String UID) {
        object[2]= = UID;
    }

    public String getTrue_name() {
        return true_name;
    }

    public void setTrue_name(String true_name) {
        object[3]=this.true_name = true_name;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        object[4]= = gender;
    }

    public Timestamp getRegister_date() {
        return register_date;
    }

    public void setRegister_date(Timestamp register_date) {
        object[5]=this.register_date = register_date;
    }

    public int getLevel() {
        return level;
    }

    public void setLevel(int level) {
        object[6]= = level;
    }

    public int getHas_done() {
        return has_done;
    }

    public void setHas_done(int has_done) {
        object[7]=this.has_done = has_done;
    }

    public double getBalance() {
        return balance;
    }

    public void setBalance(double balance) {
        object[8]= = balance;
    }

    public String getDepartment() {
        return department;
    }

    public void setDepartment(String department) {
        object[9]= = department;
    }

    public String getPhonenumber() {
        return phonenumber;
    }

    public void setPhonenumber(String phonenumber) {
        object[10]= = phonenumber;
    }

    public Date getBorn_date() {
        return born_date;
    }

    public void setBorn_date(Date born_date) {
        object[11]=this.born_date = born_date;
    }

    public boolean getIsAdmin() {
        return isAdmin;
    }

    public void setIsAdmin(boolean isAdmin) {
        object[12]= = isAdmin;
    }

    public Object[] getObjects(){
        return object;
    }
}

在实体类的构建中稍显麻烦,但可以避免反射操作时,不同类型的赋值需要分开写的问题.

在执行从数据库中取值并写入实体类操作时也较为简便
 

public boolean addsomeone(User user) throws SQLException {
        sql="insert into register_info(用户名,密码,`工号/学号`,姓名,性别,注册时间,信誉等级,已完成件数,账户余额,所属系部,电话号码,管理员权限) values(?,?,?,?,?,?,?,?,?,?,?,?)";
        pst=(sql);
        Object[] objects = ();
        for (int i=0;i<;i++){
            (i+1,objects[i]);
        }
        rs=();
        int len = ();
        if (len>0){
            ("注册成功");
            return true;
        }
        return false;
    }