Mybatis學習(一)原生態的JDBC編程總結

         在學習任何一種ORM的時候,免不了的都要讓我們想起原生態的JDBC是如何寫的,因爲只有這樣你才能感覺出來爲什麼要有這個ORM新的產品,諸如學習hibernate、等等。jbdc顧名思義的意思是java的數據庫連接(java database connectity)。它是一種執行sql的java的API,可以爲多種數據庫提供統一的訪問基準。

        一般jdbc的執行流程是這樣的:1、加載數據庫的驅動;2、建立數據庫連接;3、向數據庫發起sql要求;4、獲取返回數據庫處理的結果;5、處理返回的結果;6、釋放資源。

        按照這個思路咱們手寫一個小程序:查詢用戶名爲helloWord的用戶,並且輸出這個用戶的信息(id、用戶名)。

        代碼如下:

package cn.bj.mybatis.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
 * <p>單獨的jdbc程序</p>
 * @author woniu
 * @date 2015-06-10
 * @version 1.0
 */
public class DataBase {

	public static void main(String[] args) {
		
		Connection connection = null;//連接
		PreparedStatement ps = null;//預編譯的statement
		ResultSet rs = null;//結果集
		
		try {
			//1、註冊驅動
			Class.forName("com.mysql.jdbc.Driver");
			//2、通過驅動管理類獲取數據庫的連接
			connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8","root","root");
			//3、建立sql語句,向數據庫發起要求;獲取預處理的statement
			String sql = "select * from user where username = ? ";
			ps = connection.prepareStatement(sql);
			ps.setString(1, "helloworld");
			//4、獲取結果集
			rs = ps.executeQuery();
			//5、處理結果集
			while(rs.next()){
				System.out.println(rs.getString("id") + " " + rs.getString("username"));
			}
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally{
			//6、釋放資源
			if(rs !=null){
				try {
					rs.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
			if(ps != null){
				try {
					ps.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
			if(connection != null){
				try {
					connection.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
		}
		
	}
}

寫完這段代碼進行一下總結,用jdbc方式編碼的缺點:

1、數據庫的連接,使用時就創建不使用時就釋放,一開一閉,對數據庫進行頻繁的操作,導致資源嚴重的被浪費。

2、sql語句被寫到了java的代碼中,如果數據庫的表改變了,那麼就得重新的編寫java類。

3、sql語句設置參數比較麻煩,必須的確定參數的位置,要不然會出錯。

4、獲取結果時存在大量的手工操作,如果一張表裏有10幾個字段的話,手工就得寫10幾條rs.get語句,造成大量的重複工作。

就是因爲這樣,現在許多ORM產品誕生了,學習他們就是因爲他們帶來很多簡便的操作,下面就開始mybatis學習之旅了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章