java执行SQL语句实现查询的通用方法详解
完成SQL查询并将查询结果放入Vector容器,以便其他程序使用
/* *执行sql查询语句 */ publicstaticVector executeQuery(Class clazz,Stringsql,Object...args){ Connectionconn=null; PreparedStatementpreparedstatement=null; ResultSetrs=null; Vector vecRs=newVector (); Tobj=null; try{ conn=JDBCTools.getConnection(); preparedstatement=conn.prepareStatement(sql); //通过sql语句来判断选择了那些列 for(inti=0;i mapMetaData=newHashMap (); //打印一列的列名 while(rs.next()){ //获取数据表中满足要求的一行数据,并放入Map中 for(inti=0;i 0){ obj=clazz.newInstance(); for(Map.Entry entry:mapMetaData.entrySet()){ Stringfieldkey=entry.getKey(); Objectfieldvalue=entry.getValue(); //System.out.println(fieldkey+":"+fieldvalue); ReflectionUtils.setFieldValue(obj,fieldkey,fieldvalue); //通过反射赋值 } } //将对象装入Vector容器 vecRs.add(obj); } } catch(Exceptione){ e.printStackTrace(); } returnvecRs; }
其中使用到的工具类方法
获取数据库连接JDBCTools.getConnection()
/* *获取数据库的连接 */ publicstaticConnectiongetConnection()throwsException{ Connectionconn=null; Stringdriver=null; StringjdbcUrl=null; Stringusername=null; Stringpassword=null; //获取Properties对象 Propertiesproperties=newProperties(); InputStreamin=JDBCTools.class.getClassLoader().getResourceAsStream("jdbc.properties"); properties.load(in); driver=properties.getProperty("driver"); jdbcUrl=properties.getProperty("jdbcUrl"); username=properties.getProperty("user"); password=properties.getProperty("password"); Class.forName(driver); conn=DriverManager.getConnection(jdbcUrl,username,password); returnconn; }
ReflectionUtils.setFieldValue(obj,fieldkey,fieldvalue);
将obj对象的fieldkey属性赋值为fieldvalue
//设置对象的属性 publicstaticvoidsetFieldValue(Objectobj,StringfieldName,Objectvalue){ Fieldfield=getDeclaredField(obj,fieldName); if(field==null){ thrownewIllegalArgumentException("Couldnotfindfield["+ fieldName+"]ontarget["+obj+"]"); } makeAccessiable(field); try{ field.set(obj,value); } catch(IllegalAccessExceptione){ System.out.println("不可能抛出的异常"); } } //判断field的修饰符是否是public,并据此改变field的访问权限 publicstaticvoidmakeAccessiable(Fieldfield){ if(!Modifier.isPublic(field.getModifiers())){ field.setAccessible(true); } } //获取field属性,属性有可能在父类中继承 publicstaticFieldgetDeclaredField(Objectobj,StringfieldName){ for(Class>clazz=obj.getClass();clazz!=Object.class;clazz=clazz.getSuperclass()){ try{ returnclazz.getDeclaredField(fieldName); } catch(Exceptione){ } } returnnull; }
总结
以上就是本文关于java执行SQL语句实现查询的通用方法详解的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。