常规向:
通过反射的操作,先循环遍历实体类中的全部属性,再通过字符串拼接方法将首字母改为大写并与"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;
}