原生JDBC的代碼


package com.fdy.javacTest;

import java.sql.*;

/**
 * @Description:
 * @author: fdy
 * @date: 2020/3/10 22:10
 */
public class JDBCDemo {
    public static void main(String[] args) {
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
        try {
        // 加載數據庫驅動
            Class.forName("com.mysql.jdbc.Driver");
        // 通過驅動管理類獲取數據庫鏈接
            connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8", "root", "root");
        // 定義sql語句 ?表示占位符
            String sql = "select * from user where username = ?";
        // 獲取預處理statement
            preparedStatement = connection.prepareStatement(sql);
        // 設置參數,第一個參數為sql語句中參數的序號(從1開始),第二個參數為設置的參數值
            preparedStatement.setString(1, "小花");
        // 向數據庫發出sql執行查詢,查詢出結果集
            resultSet = preparedStatement.executeQuery();
        // 遍歷查詢結果集
            while (resultSet.next()) {
                System.out.println(resultSet.getString("id") + " " + resultSet.getString("username"));
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
        // 釋放資源
            if (resultSet != null) {
                try {
                    resultSet.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (preparedStatement != null) {
                try {
                    preparedStatement.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (connection != null) {
                try {
                    connection.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
總結:JDBC缺陷總結

1:數據庫鏈接創建、釋放頻繁造成系統資源浪費從而影響系統性能,如果使用數據庫連接可解決此問題。

2:Sql 語句在代碼中硬編碼,造成代碼不易維護,實際應用 sql 變化的可能較大, sql 變動需要改變java 代碼。

3:使用 preparedStatement 向占有位符號傳參數存在硬編碼,因為 sql 語句的 where 條件不一定,可能多也可能少,修改 sql 還要修改代碼,系統不易維護。

4:對結果集解析存在硬編碼(查詢列名), sql 變化導致解析代碼變化,系統不易維護,如果能將數據庫記錄封裝成 pojo 對象解析比較方便。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM