MyBatis框架詳解—MyBatis框架快速入門

本篇文章主要內(nèi)容:
快速開(kāi)始一個(gè) MyBatis
基本CURD?的操作
MyBatis?內(nèi)部對(duì)象分析
使用Dao?對(duì)象
入門案例
MyBatis 開(kāi)發(fā)準(zhǔn)備
搭建MyBatis 開(kāi)發(fā)環(huán)境,實(shí)現(xiàn)第一個(gè)案例
使用Mybatis?準(zhǔn)備
下載 mybatis https://github.com/mybatis/mybatis-3/releases
搭建MyBatis?開(kāi)發(fā)環(huán)境
(1)?創(chuàng)建 mysql?數(shù)據(jù)庫(kù)和表
數(shù)據(jù)庫(kù)名 ssm ;表名student

?CREATE TABLE `student` (
? ? `id` int(11) NOT NULL ,
? ? `name` varchar(255) DEFAULT?NULL,
? ? `email` varchar(255) DEFAULT?NULL,
? ? `age` int(11) DEFAULT NULL,?
? ? PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
?(2)?創(chuàng)建 maven?工程
創(chuàng)建maven 工程,信息如下:
模板:

工程坐標(biāo):

(3)?刪除默認(rèn)創(chuàng)建的 App?類文件

(4)?加入 maven?坐標(biāo)
pom.xml 加入maven 坐標(biāo):

(5)?加入 maven?插件

(6)?編寫 Student?實(shí)體類
創(chuàng)建包 com.bjpowernode.domain, 包中創(chuàng)建Student 類

(7)?編寫 Dao?接口 StudentDao

(8)?編寫 Dao?接口 Mapper?映射文件 StudentDao.xml
要求:
1.?在dao?包中創(chuàng)建文件StudentDao.xml
2.?要StudentDao.xml?文件名稱和接口StudentDao?一樣,區(qū)分大小寫的一樣。

(9)?創(chuàng)建 MyBatis?主配置文件
項(xiàng)目src/main 下創(chuàng)建 resources 目錄,設(shè)置 resources 目錄為 resources root
創(chuàng)建主配置文件:名稱為mybatis.xml
說(shuō)明:主配置文件名稱是自定義的,內(nèi)容如下:

支持中文的url
jdbc:mysql://localhost:3306/ssm?useUnicode=true&characterEncoding=utf-8
(10)?創(chuàng)建測(cè)試類 MyBatisTest
src/test/java/com/bjpowernode/ 創(chuàng)建MyBatisTest.java 文件


(11)?配置日志功能
mybatis.xml 文件加入日志配置,可以在控制臺(tái)輸出執(zhí)行的sql 語(yǔ)句和參數(shù)

?insert?操作
(1)?StudentDao?接口中增加方法
int insertStudent(Student student);
(2)?StudentDao.xml?加入 sql?語(yǔ)句

(3)?增加測(cè)試方法

MyBatis?對(duì)象分析
對(duì)象使用
?SqlSession , SqlSessionFactory 等
(1)?Resources?類
Resources 類,顧名思義就是資源,用于讀取資源文件。其有很多方法通過(guò)加載并解析資源文件,返回不同類型的IO 流對(duì)象。
(2)?SqlSessionFactoryBuilder?類
SqlSessionFactory 的創(chuàng)建,需要使用 SqlSessionFactoryBuilder 對(duì)象的build()方法。由于 SqlSessionFactoryBuilder 對(duì)象在創(chuàng)建完工廠對(duì)象后,就完成了其歷史使命,即可被銷毀。所以,一般會(huì)將該 SqlSessionFactoryBuilder 對(duì)象創(chuàng)建為一個(gè)方法內(nèi)的局部對(duì)象,方法結(jié)束,對(duì)象銷毀。
(3)?SqlSessionFactory?接口
SqlSessionFactory?接口對(duì)象是一個(gè)重量級(jí)對(duì)象(系統(tǒng)開(kāi)銷大的對(duì)象),是線程安全的,所以一個(gè)應(yīng)用只需要一個(gè)該對(duì)象即可。創(chuàng)建 SqlSession?需要使用SqlSessionFactory?接口的的openSession()方法。
openSession(true):創(chuàng)建一個(gè)有自動(dòng)提交功能的 SqlSession
openSession(false):創(chuàng)建一個(gè)非自動(dòng)提交功能的 SqlSession,需手動(dòng)提交
openSession():同 openSession(false)
(4)?SqlSession?接口
SqlSession?接口對(duì)象用于執(zhí)行持久化操作。一個(gè) SqlSession?對(duì)應(yīng)著一次數(shù)據(jù)庫(kù)會(huì)話,一次會(huì)話以 SqlSession?對(duì)象的創(chuàng)建開(kāi)始,以 SqlSession?對(duì)象的關(guān)閉結(jié)束。
SqlSession 接口對(duì)象是線程不安全的,所以每次數(shù)據(jù)庫(kù)會(huì)話結(jié)束前,需要馬上調(diào)用其 close()方法,將其關(guān)閉。再次需要會(huì)話,再次創(chuàng)建。 SqlSession 在方法內(nèi)部創(chuàng)建,使用完畢后關(guān)閉。
?創(chuàng)建工具類
(1)?創(chuàng)建 MyBatisUtil?類
package com.bjpowernode.common;

(2)?使用 MyBatisUtil?類

MyBatis?使用傳統(tǒng) Dao?開(kāi)發(fā)方式
使用Dao 的實(shí)現(xiàn)類,操作數(shù)據(jù)庫(kù)
Dao?開(kāi)發(fā)
(1)?創(chuàng)建 Dao?接口實(shí)現(xiàn)類
public class StudentDaoImpl implements StudentDao
(2)?實(shí)現(xiàn)接口中 select?方法

測(cè)試查詢操作:
MyBatisTest 類中創(chuàng)建StudentDaoImpl 對(duì)象

(3)?實(shí)現(xiàn)接口中 insert?方法

測(cè)試insert

傳統(tǒng)Dao?開(kāi)發(fā)方式的分析
在前面例子中自定義Dao 接口實(shí)現(xiàn)類時(shí)發(fā)現(xiàn)一個(gè)問(wèn)題:Dao 的實(shí)現(xiàn)類其實(shí)并沒(méi)有干什么實(shí)質(zhì)性的工作,它僅僅就是通過(guò) SqlSession 的相關(guān) API 定位到映射文件mapper 中相應(yīng) id 的 SQL 語(yǔ)句,真正對(duì) DB 進(jìn)行操作的工作其實(shí)是由框架通過(guò)mapper 中的 SQL 完成的。
所以,MyBatis 框架就拋開(kāi)了Dao 的實(shí)現(xiàn)類,直接定位到映射文件mapper 中的相應(yīng) SQL 語(yǔ)句,對(duì)DB 進(jìn)行操作。這種對(duì)Dao 的實(shí)現(xiàn)方式稱為Mapper 的動(dòng)態(tài)代理方式。
Mapper 動(dòng)態(tài)代理方式無(wú)需程序員實(shí)現(xiàn)Dao 接口。接口是由 MyBatis 結(jié)合映射文件自動(dòng)生成的動(dòng)態(tài)代理實(shí)現(xiàn)的。
最后奉上視頻教程??,視頻觀看效果更佳!!走過(guò)路過(guò)別忘素質(zhì)三連哦~~

