程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2023-05(1)

通用表查询返回所有行

发布于2020-11-19 20:36     阅读(1228)     评论(0)     点赞(3)     收藏(4)


  1. //通用表查询返回所有行
  2. public<T> List<T> Query(Class<T> clazz, String sql, Object...args){
  3. Connection conn= null;
  4. PreparedStatement ps=null;
  5. ResultSet rs;
  6. try {
  7. conn=JDBC_curd.getConnection();
  8. // 预编译sql
  9. ps=conn.prepareStatement(sql);
  10. // 填充占位符
  11. for (int i = 0; i <args.length ; i++) {
  12. ps.setObject(i+1,args[i]);
  13. }
  14. // 返回结果集
  15. rs=ps.executeQuery();
  16. // 通过结果集获得元数据
  17. ResultSetMetaData rsmd=rs.getMetaData();
  18. // 获得列数
  19. int count=rsmd.getColumnCount();
  20. List<T> list=new ArrayList<>();
  21. while (rs.next()){//判断结果集下一条是否还有数据
  22. // 获得该类的对象
  23. T t=clazz.newInstance();
  24. for (int i = 0; i <count ; i++) {
  25. //获得列值
  26. Object columnValue=rs.getObject(i+1);
  27. // 获得列名 针对类名和列名相同的情况
  28. // String columnName=rsmd.getColumnName(i+1);
  29. // 获得别名  当用列的别名时,类的属性名一定要与这别名相同
  30. String columnLabel=rsmd.getColumnLabel(i+1);
  31. // 通过反射获得获得对应属性
  32. Field field=clazz.getDeclaredField(columnLabel);
  33. // 私有可通行
  34. field.setAccessible(true);
  35. // 调用该对象的set方法
  36. field.set(t,columnValue);
  37. }
  38. list.add(t);
  39. }
  40. return list;
  41. } catch (SQLException | NoSuchFieldException | IllegalAccessException | InstantiationException throwables) {
  42. throwables.printStackTrace();
  43. }finally {
  44. JDBC_curd.closeConnection(conn,ps);
  45. }
  46. return null;
  47. }
  48. }

 



所属网站分类: 技术文章 > 博客

作者:小胖子爱java

链接:http://www.javaheidong.com/blog/article/918/3cd19a805d990575ca4e/

来源:java黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

3 0
收藏该文
已收藏

评论内容:(最多支持255个字符)