diff --git a/leaveschool/leaving/src/main/java/com/supwisdom/leaveschool/leaving/test/Test1.java b/leaveschool/leaving/src/main/java/com/supwisdom/leaveschool/leaving/test/Test1.java
new file mode 100644
index 0000000..eba1f13
--- /dev/null
+++ b/leaveschool/leaving/src/main/java/com/supwisdom/leaveschool/leaving/test/Test1.java
@@ -0,0 +1,39 @@
+package com.supwisdom.leaveschool.leaving.test;
+
+import java.io.Serializable;
+
+public class Test1 implements Serializable{
+	
+	private static final long serialVersionUID = -7279515508348721825L;
+
+	private String id;
+	
+	private String name;
+	
+	private String address;
+
+	public String getId() {
+		return id;
+	}
+
+	public void setId(String id) {
+		this.id = id;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public String getAddress() {
+		return address;
+	}
+
+	public void setAddress(String address) {
+		this.address = address;
+	}
+	
+}
diff --git a/leaveschool/leaving/src/main/java/com/supwisdom/leaveschool/leaving/test/TestMain.java b/leaveschool/leaving/src/main/java/com/supwisdom/leaveschool/leaving/test/TestMain.java
new file mode 100644
index 0000000..1efcfb7
--- /dev/null
+++ b/leaveschool/leaving/src/main/java/com/supwisdom/leaveschool/leaving/test/TestMain.java
@@ -0,0 +1,44 @@
+package com.supwisdom.leaveschool.leaving.test;
+
+import java.lang.reflect.Field;
+
+public class TestMain {
+	
+	
+	
+	public static <T> Object save(T entity) throws Exception{
+		Field field = entity.getClass().getDeclaredField("id");
+		//setAccessible这行代码把对象上的id字段设置为public访问属性.
+		 field.setAccessible(true);
+		// 设置该T的id属性
+		field.set(entity, "1111");
+		return entity;
+	}
+	
+	public static void main(String[] args) {
+		try {
+			System.out.println(save(new Test1()));
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		
+		/*Test1 user1 = new Test1();
+        try {
+            Field field = Test1.class.getDeclaredField("name");
+            
+            //setAccessible这行代码把对象上的name字段设置为public访问属性.
+            field.setAccessible(true);
+            
+            // 设置该user1的name属性
+            field.set(user1, "zhangsan");
+            System.out.println(user1.getName());
+        } catch (Exception e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }*/
+
+	}
+	
+	
+	
+}
