1. 程式人生 > 其它 >MyBatis(一)-JDBC程式設計

MyBatis(一)-JDBC程式設計

技術標籤:Java框架mybatis

一、jdbc查詢資料庫主要步驟

1、載入驅動。
2、通過驅動管理類,獲取資料庫連結。
3、定義sql語句,用?表示佔位符。
4、獲取預處理statement。
5、設定引數,引數序號從1開始。
6、執行sql語句,查詢結果集。
7、遍歷查詢結果集。
8、釋放資源。

二、jdbc的不足

1、資料庫連結建立、釋放頻繁,造成系統資源浪費,從而影響系統性能。可使用資料庫連結池解決此問題。
2、Sql語句在程式碼中為硬編碼,不易維護,實際應用中sql變化可能較大,sql變動需要改變java程式碼。
3、使用preparedStatement,引數傳入為硬編碼,因sql語句的where條件不定,修改sql時還要修改程式碼,系統不易維護。

4、對結果集解析存在硬編碼(查詢列名),sql變化導致解析程式碼變化,系統不易維護,如果能將資料庫記錄封裝成pojo物件解析比較方便。

三、主要程式碼

    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, "Tom");

            //執行查詢,查詢結果集 
            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(); 
                } 
            }
        }
    
    }