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

原创 2016年08月23日 14:04:06

最近玩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.java

package 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属性与实体属性名一致,就可以了。

ASP.NET WebForm Form表单如何实现MVC那种“自动装配”效果呢?

我们知道ASP.NET MVC有个强大的地方就是Form表单提交到action的时候,可以直接将Form的参数直接装配到action的参数实体对象中 比如 action方法 Registe...
  • yhyhyhy
  • yhyhyhy
  • 2016年02月25日 15:08
  • 186

深度剖析:Java POJO Bean 对象与 Web Form 表单的自动装配

时下很多 Web 框架 都实现了 Form 表单域与 Java 对象属性的自动装配功能,该功能确实非常有用,试想如果没这功能则势必到处冲积着 request.getParameter() 系列方法与类...

深度剖析:Java POJO Bean 对象与 Web Form 表单的自动装配

深度剖析:Java POJO Bean 对象与 Web Form 表单的自动装配   时下很多 Web 框架 都实现了 Form 表单域与 Java 对象属性的自动装配功能,该功能确实非常有用,试想...

深度剖析:Java POJO Bean 对象与 Web Form 表单的自动装配

时下很多 Web 框架 都实现了 Form 表单域与 Java 对象属性的自动装配功能,该功能确实非常有用,试想如果没这功能则势必到处冲积着 request.getParameter() 系列方法与类...

用form表单实现一键批量增、删、改功能

前台页面: 模板用的是smatey Document $(function(){ $("#add").click...

用一个form表单实现一次性无限极分类添加功能

首先表单类似于这个样子: 接下来是前台的显示页面,模板用smatey $(function(){ $(do...

使用过滤器间接实现form表单设置自定义http头(header)功能

今天项目遇到一个问题,我们项目用户验证和权限验证的信息(licence)是在http头中设置的,百度了一下,只有ajax才能设置头信息,form表单是无法设置的,但是我突然想起springMVC关于f...

Ext 添加功能form表单实例

  • 2012年03月22日 17:17
  • 5KB
  • 下载

Jquery实现页面加载自动提交form表单

Jquery在也页面加载完成后自动提交表单
  • bestcxx
  • bestcxx
  • 2016年01月12日 19:27
  • 3523
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:让你的Entity实现自动装配的功能,swing也玩form表单赋值
举报原因:
原因补充:

(最多只允许输入30个字)