<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                [TOC] ### 使用方法: ~~~ @Test public void testGet() { String sql = "SELECT id, name, email, birth " + "FROM customers WHERE id = ?"; // System.out.println(sql); Customer customer = get(Customer.class, sql, 5); System.out.println(customer); sql = "SELECT flow_id flowId, type, id_card idCard, " + "exam_card examCard, student_name studentName, " + "location, grade " + "FROM examstudent WHERE flow_id = ?"; // System.out.println(sql); Student stu = get(Student.class, sql, 5); System.out.println(stu); } ~~~ ### 通用的查詢方法 返回一個對象 ~~~ /** * 通用的查詢方法:可以根據傳入的 SQL、Class 對象返回 SQL 對應的記錄的對象 * @param clazz: 描述對象的類型 * @param sql: SQL 語句。可能帶占位符 * @param args: 填充占位符的可變參數。 * @return */ public <T> T get(Class<T> clazz, String sql, Object... args) { T entity = null; Connection connection = null; PreparedStatement preparedStatement = null; ResultSet resultSet = null; try { //1. 得到 ResultSet 對象 connection = JDBCTools.getConnection(); preparedStatement = connection.prepareStatement(sql); for (int i = 0; i < args.length; i++) { preparedStatement.setObject(i + 1, args[i]); } resultSet = preparedStatement.executeQuery(); //2. 得到 ResultSetMetaData 對象 ResultSetMetaData rsmd = resultSet.getMetaData(); //3. 創建一個 Map<String, Object> 對象, 鍵: SQL 查詢的列的別名, //值: 列的值 Map<String, Object> values = new HashMap<String, Object>(); //4. 處理結果集. 利用 ResultSetMetaData 填充 3 對應的 Map 對象 if(resultSet.next()){ for(int i = 0; i < rsmd.getColumnCount(); i++){ String columnLabel = rsmd.getColumnLabel(i + 1); Object columnValue = resultSet.getObject(i + 1); values.put(columnLabel, columnValue); } } //5. 若 Map 不為空集, 利用反射創建 clazz 對應的對象 if(values.size() > 0){ entity = clazz.newInstance(); //5. 遍歷 Map 對象, 利用反射為 Class 對象的對應的屬性賦值. for(Map.Entry<String, Object> entry: values.entrySet()){ String fieldName = entry.getKey(); Object value = entry.getValue(); ReflectionUtils.setFieldValue(entity, fieldName, value); } } } catch (Exception e) { e.printStackTrace(); } finally { JDBCTools.releaseDB(resultSet, preparedStatement, connection); } return entity; } ~~~ ### 分開寫代碼展示 ~~~ public Customer getCustomer(String sql, Object... args) { Customer customer = null; Connection connection = null; PreparedStatement preparedStatement = null; ResultSet resultSet = null; try { connection = JDBCTools.getConnection(); preparedStatement = connection.prepareStatement(sql); for (int i = 0; i < args.length; i++) { preparedStatement.setObject(i + 1, args[i]); } resultSet = preparedStatement.executeQuery(); if (resultSet.next()) { // stu = new Student(); // stu.setFlowId(resultSet.getInt(1)); // stu.setType(resultSet.getInt(2)); // stu.setIdCard(resultSet.getString(3)); customer = new Customer(); customer.setId(resultSet.getInt(1)); customer.setName(resultSet.getString(2)); customer.setEmail(resultSet.getString(3)); customer.setBirth(resultSet.getDate(4)); } } catch (Exception e) { e.printStackTrace(); } finally { JDBCTools.releaseDB(resultSet, preparedStatement, connection); } return customer; } public Student getStudent(String sql, Object... args) { Student stu = null; Connection connection = null; PreparedStatement preparedStatement = null; ResultSet resultSet = null; try { connection = JDBCTools.getConnection(); preparedStatement = connection.prepareStatement(sql); for (int i = 0; i < args.length; i++) { preparedStatement.setObject(i + 1, args[i]); } resultSet = preparedStatement.executeQuery(); if (resultSet.next()) { stu = new Student(); stu.setFlowId(resultSet.getInt(1)); stu.setType(resultSet.getInt(2)); stu.setIdCard(resultSet.getString(3)); // ... } } catch (Exception e) { e.printStackTrace(); } finally { JDBCTools.releaseDB(resultSet, preparedStatement, connection); } return stu; } ~~~ ### 整體展示 ![](https://box.kancloud.cn/921fd8f5e80a121a70596598d00924bd_865x563.png) ![](https://box.kancloud.cn/4b8400e9886151e763ce26a2a39df4e6_733x545.png) ![](https://box.kancloud.cn/0daa8d3684d84097a18cd6fcd5b5c8ea_763x543.png) ![](https://box.kancloud.cn/72e205659999da869f0e3828997f9cd9_763x561.png) ![](https://box.kancloud.cn/815a12bb0fc6d0f1b56fc75729690f52_835x563.png) ![](https://box.kancloud.cn/672b7a477f771282baabe89d0eb85313_829x521.png) ![](https://box.kancloud.cn/dbfab1398b83610845b09418b24d6810_723x559.png) ![](https://box.kancloud.cn/41c4bf101b4089a8b002981683dde126_837x585.png) ![](https://box.kancloud.cn/3c14b169cb75b23f7a7eb97f48595d7d_841x567.png) ![](https://box.kancloud.cn/1a810e3a54c6356a065cf6d1d9b7c65b_767x557.png)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看