题目:在数据库操作中通常有如下的插入语句:
一、题目描述:
在数据库操作中通常有如下的插入语句:insert into user (id,name,age) values (‘1’,‘张三’,‘18’),使用反射完成 SQL 的拼接。Student student = new Student(1, “张三”, 18);System.out.println(getSQL(user));
二、核心代码如下:
package homework10.homework1027;
import java.lang.reflect.Field;
/**
* 在数据库操作中通常有如下的插入语句:insert into user (id,name,age) values ('1','张三','18'),
* 使用反射完成 SQL 的拼接。
* Student student = new Student(1, "张三", 18);
* System.out.println(getSQL(user));
*/
public class Demo01 {
public static void main(String[] args) throws IllegalAccessException {
Student s = new Student(1, "张三", 18);//实例化对象
StringBuffer sql = getSQL(s);//调用getSQL()方法
System.out.println(sql);
}
//getSQL()方法
public static StringBuffer getSQL(Object o) throws IllegalAccessException {
Class clazz = o.getClass();//利用反射获取类的属性和方法等
StringBuffer stringBuffer = new StringBuffer("insert into ");
stringBuffer.append(clazz.getSimpleName() + " (");
Field[] fields = clazz.getDeclaredFields();
for (Field field : fields) {
field.setAccessible(true);//暴力反射,获取类的属性
stringBuffer.append(field.getName() + ",");
}
stringBuffer.deleteCharAt(stringBuffer.length() - 1);//将最后一个位置的字符删除
stringBuffer.append(") values (");//添加内容
for (Field field : fields) {
Object o1 = field.get(o);
stringBuffer.append("'" + o1 + "',");
}
stringBuffer.deleteCharAt(stringBuffer.length() - 1);//将最后一个位置的字符删除
stringBuffer.append(");");
return stringBuffer;
}
}
//建一个学生类
class Student {
private Integer id;//用户ID
private String name;//用户姓名
private Integer age;//用户年龄
public Student() {
}
public Student(Integer id, String name, Integer age) {
this.id = id;
this.name = name;
this.age = age;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}