您的位置:首页 > 数据库

利用反射拼接sql语句

2017-06-10 15:08 246 查看
首先,创建一个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’)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  string sql