首页 > 数据库技术 > 详细

JDBC - 通用查询SQL

时间:2021-07-13 17:19:47      阅读:6      评论:0      收藏:0      [点我收藏+]
 1     /**
 2      * General query based on different tables.
 3      * @param clazz clazz
 4      * @param sql sql
 5      * @param args args
 6      * @param <T> t
 7      * @return T
 8      */
 9     public <T> T getInstance(Class<T> clazz, String sql, Object... args) {
10         try (PreparedStatement ps = connection.prepareStatement(sql)) {
11             for (int i = 0; i < args.length; i++) {
12                 ps.setObject(i + 1, args[i]);
13             }
14             ResultSet resultSet = ps.executeQuery();
15             ResultSetMetaData metaData = resultSet.getMetaData();
16             int columnCount = metaData.getColumnCount();
17             if (resultSet.next()) {
18                 T t = clazz.getDeclaredConstructor().newInstance();
19                 for (int i = 0; i < columnCount; i++) {
20                     Object columnValue = resultSet.getObject(i + 1);
21                     String columnLabel = metaData.getColumnLabel(i + 1);
22                     Field field = clazz.getDeclaredField(columnLabel);
23                     field.setAccessible(true);
24                     field.set(t, columnValue);
25                 }
26                 return t;
27             }
28         } catch (Exception e) {
29             e.printStackTrace();
30         }
31         return null;
32     }
33 
34     /**
35      * Set query based on different tables..
36      * @param clazz clazz
37      * @param sql sql
38      * @param args args
39      * @param <T> t
40      * @return T
41      */
42     public <T> List<T> getForList(Class<T> clazz, String sql, Object... args) {
43         try (PreparedStatement ps = connection.prepareStatement(sql)) {
44             for (int i = 0; i < args.length; i++) {
45                 ps.setObject(i + 1, args[i]);
46             }
47             ResultSet resultSet = ps.executeQuery();
48             ResultSetMetaData metaData = resultSet.getMetaData();
49             int columnCount = metaData.getColumnCount();
50             List<T> list = new ArrayList<>();
51             while (resultSet.next()) {
52                 T t = clazz.getDeclaredConstructor().newInstance();
53                 for (int i = 0; i < columnCount; i++) {
54                     Object columnValue = resultSet.getObject(i + 1);
55                     String columnLabel = metaData.getColumnLabel(i + 1);
56                     Field field = clazz.getDeclaredField(columnLabel);
57                     field.setAccessible(true);
58                     field.set(t, columnValue);
59                 }
60                 list.add(t);
61             }
62             return list;
63         } catch (Exception e) {
64             e.printStackTrace();
65         }
66         return null;
67     }

 

JDBC - 通用查询SQL

原文:https://www.cnblogs.com/yhc-love-cl/p/15006713.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!