mybatis基本教程

MyBatis介紹

MyBatis 本是apache的一個開源項目iBatis, 2010年這個項目由apache software foundation 遷移到了google code,並且改名爲MyBatis 。2013年11月遷移到Github。 MyBatis是一個優秀的持久層框架,它對jdbc的操作數據庫的過程進行封裝,使開發者只需要關注 SQL 本身,而不需要花費精力去處理例如註冊驅動、創建connection、創建statement、手動設置參數、結果集檢索等jdbc繁雜的過程代碼

Mybatis通過xml或註解的方式將要執行的各種statement(statement、preparedStatemnt、CallableStatement)配置起來,並通過java對象和statement中的sql進行映射生成最終執行的sql語句,最後由mybatis框架執行sql並將結果映射成java對象並返回。


使用jdbc編程問題總結

一: jdbc編程步驟
①加載數據庫驅動;
②創建並獲取數據庫鏈接;
③創建jdbc statement對象;
④設置sql語句;
⑤設置sql語句中的參數(使用preparedStatement);
⑥通過statement執行sql並獲取結果;
⑦對sql執行結果進行解析處理;
⑧釋放資源(resultSet、preparedstatement、connection)。

二:jdbc程序代碼示例

package com.ithao.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class JdbcUtil {
	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的原始方法(未經封裝)實現了查詢數據庫表記錄的操作。

三:  jdbc問題總結
①數據庫鏈接創建、釋放頻繁造成系統資源浪費從而影響系統性能,如果使用數據庫連接池可解決此問題。
②Sql語句在代碼中硬編碼,造成代碼不易維護,實際應用sql變化的可能較大,sql變動需要改變java代碼。(面向配置編程)
③使用preparedStatement向佔有位符號傳參數存在硬編碼,因爲sql語句的where條件不一定,可能多也可能少,修改sql還要修改代碼,系統不易維護。(自動映射)
④對結果集解析存在硬編碼(查詢列名),sql變化導致解析代碼變化,系統不易維護,如果能將數據庫記錄封裝成pojo對象解析比較方便。


 

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