學習目標
- 1、Mybatis的介紹
- 2、Mybatis的入門
a)使用jdbc操作資料庫存在的問題 (回顧jdbc)
b)Mybatis的架構
c)Mybatis的入門程式 (重點) - 3、Dao的開發方法
a)原始dao的開發方法 (了解)
b)介面的動態代理方式 (重點)
Jdbc介紹
- (1)案例: jdbc 做一個根據名稱查詢用戶的操作
- (2)什么是jdbc?
Java Database Connectivity,Java資料庫連接 ,簡稱JDBC
Java語言中用來規范客戶端程式如何來訪問資料庫的應用程式介面,提供了諸如查詢和更新資料庫中資料的方法
(3)什么是資料庫驅動?
資料庫提供商對JDBC介面的實作類,如mysql,oracle,sqlserver
//介面
public interface JdbcApi{
public void update();
}
//介面不能直接創建物件
JdbcApi api = new JdbcApi();
api.update();
//Myql廠商
public class MysqlJdbc implements JdbcApi{
public void update(){
//Mysql寫了代碼
}
}
MysqlJdbc api = new MysqlJdbc();
api.update();
//Oracle 廠商
public class OracleJdbc implements JdbcApi{
public void update(){
//OracleJdbc寫了代碼
}
}
OracleJdbc api = new OracleJdbc();
api.update();
Jdbc操作資料庫原理圖
- (1)Jdbc如何操作Mysql?
》1 加載資料庫驅動
》2 創建并獲取資料庫鏈接
》3 創建jdbc statement物件
》4 設定sql陳述句
》5 設定sql陳述句中的引數(使用preparedStatement)
》6 通過statement執行sql并獲取結果
》7 對sql執行結果進行決議處理
》8 釋放資源(resultSet、preparedstatement、connection)

Jdbc連接池原理圖
- (1)頻繁創建連接,銷毀連接造成極大資源開銷
- (2)連接池,即一個集合,可以管理連接物件
- (3)有什么特點?
》1 可以初始化指定數量的連接
》2 可以指定集合的最大元素個數
》3 可以申請連接池的連接
》4 不用的連接可以放回連接池

Jdbc代碼分析總結
- (1) jdbc 做一個根據名稱查詢用戶的操作
搜索 - (2)初始化資料庫
create database mybatis01;
use mybatis01;
drop table if exists `user`;
create table `user` (
`id` int(11) primary key auto_increment,
`username` varchar(32) ,
`birthday` date,
`sex` char(1) ,
`address` varchar(256)
)
insert into `user` values ('1', '王五', '2014-07-10', '2', null);
insert into `user` values ('10', '張三', '2014-08-11', '1', '北京市');
insert into `user` values ('16', '張小明', '2015-07-10', '1', '河南鄭州');
insert into `user` values ('22', '陳小明', '2016-07-10', '2', '重慶');
insert into `user` values ('24', '張三豐', '2019-07-10', '1', '天津');
insert into `user` values ('25', '陳小明', '2019-07-10', '1', '杭州');
insert into `user` values ('26', '王五', '2018-07-10', null, null);
- (3)配置
mysql驅動的依賴
》創建maven工程,再創建web01模塊
》配置依賴
pom.xml
<properties>
<mysql.version>5.1.32</mysql.version>
</properties>
<!-- MySql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
(4)分析jdbc撰寫操作資料庫代碼的可改進地方
》1 頻繁創建、釋放資料庫連接 ,性能開銷大,沒有自帶連接池
》2 Sql陳述句寫在java代碼中 ,硬編碼
》3 sql陳述句的where條件與占位符賦值沒有寫判斷邏輯
》4 資料庫記錄需封裝成pojo物件 User類 大量的撰寫 轉換代碼
public class TestJdbc {
@Test
public void test01() throws Exception {
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
// 加載資料庫驅動
Class.forName("com.mysql.jdbc.Driver");
// 通過驅動管理類獲取資料庫鏈接
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mybatis01?characterEncoding=utf-8", "root", "123456");
// 定義sql陳述句 ?表示占位符
String sql = "select * from user where username = ?";
// 獲取預處理statement
preparedStatement = connection.prepareStatement(sql);
// 設定引數,第一個引數為sql陳述句中引數的序號(從1開始),第二個引數為設定的引數值
preparedStatement.setString(1, "王五");
// 向資料庫發出sql執行查詢,查詢出結果集
resultSet = preparedStatement.executeQuery();//將sql發送給資料庫
// 遍歷查詢結果集
while (resultSet.next()) {
System.out.println(resultSet.getString("id") + " " + resultSet.getString("username"));
}
// 釋放資源
resultSet.close();
preparedStatement.close();
connection.close();
}
}
Mybatis介紹
- (1)Mybatis是什么?
MyBatis 本是apache的一個開源專案iBatis,是一個基于Java的持久層框架,用來寫dao - (2)Mybatis有什么特點?
》1 最簡單安裝只要兩個jar檔案+配置幾個sql映射檔案,自帶連接池
》2 sql寫在xml里,便于統一管理和優化
》3 sql和代碼的分離,提高了可維護性
》4 提供映射標簽,支持物件與資料庫的orm欄位關系映射
》5 提供物件關系映射標簽,支持物件關系組建維護
》6 提供xml標簽,支持撰寫動態sql
總結一句,重點在xml配置,很少寫java代碼,
Mybatis架構
- (1)mybaits 是對jdbc的封裝
- (2)重點在組態檔xml

- (3)架構圖

1:核心 組態檔,放四大資訊
ip,port,username,password
2:映射檔案
select
update
delete
insert
4:SqlSessionFactory 使用了工廠設計模式的生成session的物件
3:SqlSession物件,支持增刪改查,連接
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/128498.html
標籤:AI
上一篇:Oracle 隱式資料型別轉換
下一篇:關于達夢DM8資料庫的引數修改
