利用反射拼接sql语句

来源:互联网 发布:淘宝企业店铺怎么操作 编辑:程序博客网 时间:2024/06/06 01:33

首先,创建一个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’)