首先,创建一个Student类:
class Student{
private int age;
private String name;
private Date date;
public Student(){}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
public Student(int age, String name, Date date) {
super();
this.age = age;
this.name = name;
this.date = date;
}
}
然后利用反射来拼接插入一个条数据
import java.lang.reflect.Field;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
public class ReflectDemo {
public String insert(Object o){
Class c = o.getClass();
String tableName = c.getSimpleName();
System.out.println(tableName);
Field[] fields = c.getDeclaredFields();
StringBuffer sb=new StringBuffer();
for(Field f: fields){
sb.append(f.getName() + ",");
}
String sql=sb.substring(0,sb.length()-1);
String sql2="";
StringBuffer sb2=new StringBuffer();
try {
Field[] fields2 = c.getDeclaredFields();
for (Field f : fields2) {
f.setAccessible(true);
if(f.getType()==String.class){
sb2.append("'" + f.get(o) + "',");
}else if(f.getType()==Date.class){
Date d=(Date) f.get(o);
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
String str = df.format(d);
sb2.append("'" + str + "',");
}else{
sb2.append(f.get(o) + ",");
}
}
sql2=sb2.substring(0,sb2.length()-1);
}catch (Exception e) {
e.printStackTrace();
}
return "insert into " + tableName + "("
+ sql + ") values("
+ sql2 + ")";
}
public static void main(String[] args) {
Student stu = new Student(1, "张三", new Date());
ReflectDemo s = new ReflectDemo();
String sql = s.insert(stu);
System.out.println(sql);
}
}
运行结果:
Student(age,name,date) values(1,’张三’,’2017-06-10’)