发布于2020-11-19 20:36 阅读(1324) 评论(0) 点赞(3) 收藏(4)
- //通用表查询返回所有行
- public<T> List<T> Query(Class<T> clazz, String sql, Object...args){
- Connection conn= null;
- PreparedStatement ps=null;
- ResultSet rs;
- try {
- conn=JDBC_curd.getConnection();
- // 预编译sql
- ps=conn.prepareStatement(sql);
- // 填充占位符
- for (int i = 0; i <args.length ; i++) {
- ps.setObject(i+1,args[i]);
- }
- // 返回结果集
- rs=ps.executeQuery();
- // 通过结果集获得元数据
- ResultSetMetaData rsmd=rs.getMetaData();
- // 获得列数
- int count=rsmd.getColumnCount();
- List<T> list=new ArrayList<>();
- while (rs.next()){//判断结果集下一条是否还有数据
- // 获得该类的对象
- T t=clazz.newInstance();
- for (int i = 0; i <count ; i++) {
-
- //获得列值
- Object columnValue=rs.getObject(i+1);
- // 获得列名 针对类名和列名相同的情况
- // String columnName=rsmd.getColumnName(i+1);
- // 获得别名 当用列的别名时,类的属性名一定要与这别名相同
- String columnLabel=rsmd.getColumnLabel(i+1);
- // 通过反射获得获得对应属性
- Field field=clazz.getDeclaredField(columnLabel);
- // 私有可通行
- field.setAccessible(true);
- // 调用该对象的set方法
- field.set(t,columnValue);
- }
- list.add(t);
- }
- return list;
- } catch (SQLException | NoSuchFieldException | IllegalAccessException | InstantiationException throwables) {
- throwables.printStackTrace();
- }finally {
- JDBC_curd.closeConnection(conn,ps);
- }
- return null;
- }
- }
作者:小胖子爱java
链接:http://www.javaheidong.com/blog/article/918/3cd19a805d990575ca4e/
来源:java黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 java黑洞网 All Rights Reserved 版权所有,并保留所有权利。京ICP备18063182号-2
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!