利用java发射 生产对象的sql插入语句

来源:互联网 发布:无人机pos数据怎么确定 编辑:程序博客网 时间:2024/06/05 05:29
import java.lang.reflect.Field;import java.lang.reflect.Method;/** * 这是用java反射来实现对对象的属性,方法,类名的取值。再组成一条万能的insert 语句。 * @author 小高 */public class Test2 {public static void main(String[] args) throws Exception {Test2 t=new Test2();Student stu=new Student();  //可以对任意对象操作stu.setName("小高");stu.setAge(20);stu.setId(11);    String sql=t.createInsertSql(stu);    System.out.println(sql);}    private String createInsertSql(Object obj) throws Exception {    Class cls=obj.getClass();    String sql="insert into "+cls.getSimpleName()+" (";  //类名    Field fields[]=cls.getDeclaredFields();    String columnName=""; //列名    String columnValue=""; //列值    Object objs[]=new Object[fields.length];  //多少个字段就多少个值    for (int i = 0; i < fields.length; i++) {    String fieldName=fields[i].getName();  //获得字段String fieldMethodOfget=fieldName.substring(0, 1).toUpperCase()+fieldName.substring(1, fieldName.length());Method methodofget = cls.getMethod("get"+fieldMethodOfget, null);Object value=methodofget.invoke(obj, null); //字段的值if(value!=null){  //判断是否设置值columnName+=","+fieldName;if(value.getClass().getSimpleName().equals("String")){columnValue+=",'"+value+"'";}else{columnValue+=","+value;}}}    columnName=columnName.substring(1, columnName.length());    sql+=columnName+") values (";    columnValue=columnValue.substring(1, columnValue.length());    sql+=columnValue +")";    return sql;}}
输出的结果如图所示:
0 0
原创粉丝点击