您的位置:首页 > 编程语言

让你的Entity实现自动装配的功能,swing也玩form表单赋值

2016-08-23 14:04 435 查看
最近玩swing 编程,做个小项目,发现表单赋值给实体时有点麻烦,于是走了点弯路,实现表单的自动装配,主要是让实体增加反射赋值的方法

这样做对不对,大神别喷

先定义一个装配接口

SimpleEntityInterface.java

package com.order.tools;

import java.io.Serializable;

public interface SimpleEntityInterface<T extends Serializable> extends Serializable{

public void setValue(String fieldsName,String value);

}


实现这个接口,这是关键

SimpleEntity.java

package com.order.entities;

import java.io.Serializable;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.Date;

import com.order.tools.SimpleEntityInterface;

public class SimpleEntity<T extends Serializable> implements SimpleEntityInterface<T> {

/**
*
*/
private static final long serialVersionUID = 1L;

public void setValue(String fieldsName, String value) {
Class<T> entityClass = null;
Class c = getClass();
Type t = c.getGenericSuperclass();
if (t instanceof ParameterizedType) {
Type[] p = ((ParameterizedType) t).getActualTypeArguments();
entityClass = (Class<T>) p[0];
}

Field[] field = entityClass.getDeclaredFields(); // 获取实体类的所有属性,返回Field数组
String methodName = fieldsName.substring(0, 1).toUpperCase() + fieldsName.substring(1);
for (int i = 0; i < field.length; i++) {
if (field[i].getName().equals(fieldsName)) {
String type = field[i].getGenericType().toString();
try {
if (type.equals("class java.lang.String")) { // 如果type是类类型,则前面包含"class
// ",后面跟类名
Method m = entityClass.getMethod("set" + methodName, String.class);
m.invoke(this, value);

}
if (type.equals("class java.lang.Integer")) {
Method m = entityClass.getMethod("set" + methodName, Integer.class);
m.invoke(this, Integer.valueOf(value));

}
if (type.equals("class java.lang.Boolean")) {
Method m = entityClass.getMethod("set" + methodName, Boolean.class);
m.invoke(this, Boolean.valueOf(value).booleanValue());
}

if (type.equals("class java.util.Date")) {

Method m = entityClass.getMethod("set" + methodName, Date.class);
m.invoke(this, new Date(value));

}
} catch (Exception e) {
e.printStackTrace();
}

}
}

}

}
所有实体继承这个类
Users.javapackage com.order.entities;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Version;
import javax.validation.constraints.NotNull;

import org.hibernate.annotations.GenericGenerator;
import org.hibernate.validator.constraints.Email;
import org.hibernate.validator.constraints.NotEmpty;

@Entity
@Table(name = "users_b")
public class Users extends SimpleEntity<Users>{
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(generator = "uuid")
@GenericGenerator(strategy = "uuid", name = "uuid")
private String id;
@NotEmpty(message = "员工工号不为为空")
private String jobnum;
@NotEmpty(message = "员工帐号名称不能为空")
private String userName;
@NotEmpty(message = "员工姓名不能为空")
private String realName;
@NotEmpty(message = "登录密码不能为空")
private String passWord;
@NotEmpty(message = "员工身份证信息不能为空")
private String sfzCode;
private String sfzPhoto;
@NotEmpty(message = "员工联系电话不能为空")
private String telPhone;
private String birthday;
private int age;
private String address;
@Email(message = "请输入正确的Email 地址")
private String email;
@NotEmpty(message = "员工权限配置不能为空")
private String authority;
private String photo;
@NotNull(message = "用户工作组不能为空")
@ManyToOne(cascade = { CascadeType.MERGE })
@JoinColumn(name = "group_id")
private UserGroup userGroup;
@NotEmpty(message = "员工职务不能为空")
private String worker;
@NotEmpty(message = "员工紧急联系人信息不能为空")
private String otherMan;
@NotEmpty(message = "员工紧急联系人电话不能为空")
private String otherTel;

private String comment;
@Version
private int version;

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

public String getJobnum() {
return jobnum;
}

public void setJobnum(String jobnum) {
this.jobnum = jobnum;
}

public String getUserName() {
return userName;
}

public void setUserName(String userName) {
this.userName = userName;
}

public String getRealName() {
return realName;
}

public void setRealName(String realName) {
this.realName = realName;
}

public String getPassWord() {
return passWord;
}

public void setPassWord(String passWord) {
this.passWord = passWord;
}

public String getSfzCode() {
return sfzCode;
}

public void setSfzCode(String sfzCode) {
this.sfzCode = sfzCode;
}

public String getSfzPhoto() {
return sfzPhoto;
}

public void setSfzPhoto(String sfzPhoto) {
this.sfzPhoto = sfzPhoto;
}

public String getTelPhone() {
return telPhone;
}

public void setTelPhone(String telPhone) {
this.telPhone = telPhone;
}

public String getBirthday() {
return birthday;
}

public void setBirthday(String birthday) {
this.birthday = birthday;
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

public String getAddress() {
return address;
}

public void setAddress(String address) {
this.address = address;
}

public String getEmail() {
return email;
}

public void setEmail(String email) {
this.email = email;
}

public String getAuthority() {
return authority;
}

public void setAuthority(String authority) {
this.authority = authority;
}

public String getPhoto() {
return photo;
}

public void setPhoto(String photo) {
this.photo = photo;
}

public void setUserGroup(UserGroup userGroup) {
this.userGroup = userGroup;
}

public UserGroup getUserGroup() {
return userGroup;
}

public String getWorker() {
return worker;
}

public void setWorker(String worker) {
this.worker = worker;
}

public String getOtherMan() {
return otherMan;
}

public void setOtherMan(String otherMan) {
this.otherMan = otherMan;
}

public String getOtherTel() {
return otherTel;
}

public void setOtherTel(String otherTel) {
this.otherTel = otherTel;
}

public String getComment() {
return comment;
}

public void setComment(String comment) {
this.comment = comment;
}

public int getVersion() {
return version;
}

public void setVersion(int version) {
this.version = version;
}

}


开始测试...
@Test
public void testAutoFit(){
Users users =new Users();
users.setValue("userName", "lixi");
System.out.println(users.getUserName());

}

成功通过......其它就不多讲了,在表单里textfield 设置setName属性与实体属性名一致,就可以了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息