999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于ORM框架的數(shù)據(jù)庫編程實(shí)踐

2022-05-30 02:46:11尤德華翟高粵
客聯(lián) 2022年7期

尤德華 翟高粵

摘 要:MyBatis是當(dāng)今流行的ORM開發(fā)框架,它能解決大部分企業(yè)數(shù)據(jù)庫應(yīng)用開發(fā)的復(fù)雜性問題。對于Java開發(fā)人員來說,掌握ORM框架的基本使用,已是入職Java軟件開發(fā)行業(yè)的必備技能之一。本文主要介紹MyBatis框架及其體系結(jié)構(gòu)的基本內(nèi)容及應(yīng)用,并通過一個實(shí)例說明MyBatis框架的基本使用方法,以面向?qū)ο蟮姆绞絹聿僮鞒志没瘜ο螅ㄟ^ORM框架的映射關(guān)系把面向?qū)ο蟮牟僮鬓D(zhuǎn)換成底層的SQL操作。

關(guān)鍵詞:MyBatis框架;ORM;對象關(guān)系映射;數(shù)據(jù)庫編程

一、引言

MyBatis是當(dāng)前主流的Java持久層框架之一,它是一種ORM框架,它的性能優(yōu)異,具有高度的靈活性、可優(yōu)化性和易于維護(hù)等特點(diǎn),受到了廣大互聯(lián)網(wǎng)企業(yè)的青睞,是目前大型互聯(lián)網(wǎng)項(xiàng)目的首選框架。MyBatis 的主要思想是將程序中的大量 SQL 語句剝離出來,使用 XML 文件或注解的方式實(shí)現(xiàn) SQL 的靈活配置,將 SQL 語句與程序代碼分離,在不修改程序代碼的情況下,直接在配置文件中修改 SQL 語句。

二、相關(guān)理論

(一)ORM與MyBatis

MyBatis是一個支持普通SQL查詢、存儲過程以及高級映射的持久層框架,它消除了幾乎所有的JDBC代碼和參數(shù)的手動設(shè)置以及對結(jié)果集的檢索,并使用簡單的XML或注解進(jìn)行配置和原始映射,用以將接口和Java的POJO映射成數(shù)據(jù)庫的記錄,使得Java開發(fā)人員可以使用面向?qū)ο蟮木幊趟枷雭聿僮鲾?shù)據(jù)庫。

MyBatis框架也被稱為ORM框架。所謂ORM就是一種為了解決面向?qū)ο笈c關(guān)系型數(shù)據(jù)庫中數(shù)據(jù)類型不匹配的技術(shù),它通過描述Java對象與數(shù)據(jù)庫表之間的映射關(guān)系,自動將Java應(yīng)用程序中的對象持久化到關(guān)系型數(shù)據(jù)庫的表中。ORM框架的工作原理如圖1所示。

從圖1可以看出,使用ORM框架后,應(yīng)用程序不再直接訪問底層數(shù)據(jù)庫,而是以面向?qū)ο蟮姆绞絹聿僮鞒志没瘜ο?,而ORM框架則會通過映射關(guān)系將這些面向?qū)ο蟮牟僮鬓D(zhuǎn)換成底層的SQL操作。另外,MyBatis還可以配置動態(tài)SQL并優(yōu)化SQL,可以通過配置決定SQL的映射規(guī)則,對于一些復(fù)雜的和需要優(yōu)化性能的項(xiàng)目來說,使用MyBatis更加合適。

(二)MyBatis的工作原理

MyBatis的工作原理詳見圖2所示。從圖2可以看出,MyBatis框架在操作數(shù)據(jù)庫時(shí),大體經(jīng)過了8個步驟。

(1)讀取MyBatis配置文件mybatis-congfig.xml文件,該文件作為MyBatis的全局配置文件,配置了MyBatis的運(yùn)行環(huán)境等信息,其中主要內(nèi)容是獲取數(shù)據(jù)庫連接。

(2)加載映射文件Mapper.xml,該文件配置了操作數(shù)據(jù)庫的SQL語句,但需要在mybatis-congfig.xml中加載才能執(zhí)行,可以加載多個配置文件,每個配置文件對應(yīng)數(shù)據(jù)庫中的一張表。

(3)構(gòu)建會話工廠,通過MyBatis的環(huán)境等配置信息構(gòu)建會話工廠SqlSessionFactory。

(4)創(chuàng)建SqlSession對象,由會話工廠創(chuàng)建SqlSession對象,該對象中包含了執(zhí)行SQL的所有方法。

(5)MyBatis底層定義了一個Executor接口來操作數(shù)據(jù)庫,它會根據(jù)SqlSessionFactory傳遞的參數(shù)動態(tài)地生成需要執(zhí)行的SQL語句,同時(shí)負(fù)責(zé)查詢緩存的維護(hù)。

(6)在Executor接口的執(zhí)行方法中,包含一個MappedStatement類型的參數(shù),該參數(shù)是對映射信息的封裝,用于存儲映射的SQL語句的id、參數(shù)等。

(7)輸入?yún)?shù)映射。

(8)輸出結(jié)果映射。

三、MySql數(shù)據(jù)庫

MySQL是一個關(guān)系型數(shù)據(jù)庫管理系統(tǒng),由瑞典MySQL AB 公司開發(fā),屬于 Oracle 旗下產(chǎn)品。MySQL 是最流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)之一,在 WEB 應(yīng)用方面,MySQL是最好的 RDBMS (Relational Database Management System,關(guān)系數(shù)據(jù)庫管理系統(tǒng)) 應(yīng)用軟件之一。

MySQL是一種關(guān)系型數(shù)據(jù)庫管理系統(tǒng),關(guān)系數(shù)據(jù)庫將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個大倉庫內(nèi),這樣就增加了速度并提高了靈活性。

MySQL所使用的 SQL 語言是用于訪問數(shù)據(jù)庫的最常用標(biāo)準(zhǔn)化語言。MySQL 軟件采用了雙授權(quán)政策,分為社區(qū)版和商業(yè)版,由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點(diǎn),一般中小型和大型網(wǎng)站的開發(fā)都選擇MySQL作為網(wǎng)站數(shù)據(jù)庫。

MySQL和MyBatis進(jìn)行配合使用,兼容性好,開發(fā)效率高。

四、ORM編程實(shí)例

下面以一個查詢實(shí)例來說明MyBatis的編程步驟。在許多項(xiàng)目的實(shí)際開發(fā)中,單條數(shù)據(jù)的簡單查詢經(jīng)常被涉及。單條數(shù)據(jù)查詢的性質(zhì)是精確查詢,接下來本文以一系列步驟的形式來說明如何使用MyBatis框架根據(jù)客戶編號查詢客戶信息。

根據(jù)客戶編號查詢客戶信息主要是通過查詢客戶表中的主鍵來實(shí)現(xiàn)的。

(1)在MySQL數(shù)據(jù)庫中,創(chuàng)建一個名為mybatis的數(shù)據(jù)庫,在此數(shù)據(jù)庫中創(chuàng)建一個t_customer表,同時(shí)預(yù)先插入幾條數(shù)據(jù)。

(2)在MyEclipse中,創(chuàng)建一個名為firstMyBatis的Web項(xiàng)目,將MyBatis的核心JAR包、lib目錄中的依賴JAR包,以及MySQL數(shù)據(jù)庫的驅(qū)動JAR包一同添加到項(xiàng)目lib目錄下,并發(fā)布到類路徑中。

(3)編輯MyBatis的log4j輸出日志信息文件,通過該文件可以在控制臺輸出SQL語句。

(4)在src目錄下,創(chuàng)建一個com.itheima.po包,在該包下創(chuàng)建持久化類Customer,并在類中聲明id、username、jobs和phone屬性,及其對應(yīng)的getter和setter方法。

(5)在src目錄下,創(chuàng)建一個com.itheima.mapper包,并在包中創(chuàng)建映射文件CustomerMapper.xml,部分核心代碼如下。

<!--根據(jù)客戶編號獲取客戶信息 -->

(6)在src目錄下,創(chuàng)建MyBatis的核心配置文件mybatis-config.xml,部分核心代碼如下。

<!--1.配置環(huán)境 ,默認(rèn)的環(huán)境id為mysql-->

<!--1.2.配置id為mysql的數(shù)據(jù)庫環(huán)境 -->

<!-- 使用JDBC的事務(wù)管理 -->

<!--數(shù)據(jù)庫連接池 -->

value="jdbc:mysql://localhost:3306/mybatis" />

<!--2.配置Mapper的位置 -->

(7)在src目錄下,創(chuàng)建一個com.itheima.test包,在該包下創(chuàng)建測試類MyBatisTest,并在類中編寫測試方法findCustomerByIdTest(),核心代碼如下。

// 1、讀取配置文件

String resource = "mybatis-config.xml";

InputStream inputStream = Resources.getResourceAsStream(resource);

// 2、根據(jù)配置文件構(gòu)建SqlSessionFactory

SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

// 3、通過SqlSessionFactory創(chuàng)建SqlSession

SqlSession sqlSession = sqlSessionFactory.openSession();

// 4、SqlSession執(zhí)行映射文件中定義的SQL,并返回映射結(jié)果

Customer customer = sqlSession.selectOne("com.itheima.mapper"

+ ".CustomerMapper.findCustomerById", 1);

// 打印輸出結(jié)果

System.out.println(customer.toString());

// 5、關(guān)閉SqlSession

sqlSession.close();

五、結(jié)論

本文首先對MyBatis框架的概念、特點(diǎn)和下載使用進(jìn)行了描述說明,然后對MyBatis框架的工作原理進(jìn)行了流程分析,最后通過一個簡單的查找實(shí)例來演示MyBatis框架的基本使用。通過本文的學(xué)習(xí),可以了解MyBatis的概念和作用,熟悉MyBatis的工作原理,并能使用MyBatis框架來完成基本的數(shù)據(jù)庫操作。

參考文獻(xiàn):

[1]沃爾斯. Spring實(shí)戰(zhàn) [M]. 人民郵電出版社,2016.

[2]卡內(nèi)爾. Spring開發(fā)三劍客[M],人民郵電出版社, 2020.

[3] 陳恒等. Spring Boot從入門到實(shí)戰(zhàn)[M]. 清華大學(xué)出版社出版社,2020.

主站蜘蛛池模板: 黄色网站在线观看无码| 99re在线视频观看| 就去色综合| AV无码无在线观看免费| 国产电话自拍伊人| 91九色视频网| 日韩二区三区| 日韩小视频在线观看| 国产日韩欧美一区二区三区在线 | 国产一级毛片高清完整视频版| 青青草国产在线视频| 亚洲日韩图片专区第1页| 国产欧美日韩一区二区视频在线| 精品国产Ⅴ无码大片在线观看81| 亚洲欧美日韩视频一区| 欧美福利在线播放| 国产欧美在线观看视频| 自拍偷拍欧美| 欧洲欧美人成免费全部视频 | 国产一级毛片网站| 黄色污网站在线观看| 亚欧乱色视频网站大全| 国产精品偷伦视频免费观看国产| 91久久国产综合精品女同我| 美女被操黄色视频网站| 毛片三级在线观看| 久久天天躁狠狠躁夜夜躁| 免费a级毛片18以上观看精品| 一区二区三区成人| 天天干天天色综合网| 91小视频在线观看免费版高清| 亚洲美女久久| 欧美精品H在线播放| 91久久国产成人免费观看| 蜜芽国产尤物av尤物在线看| 午夜福利在线观看成人| 国产乱子伦精品视频| 18禁影院亚洲专区| 久久永久视频| 色综合久久88| 亚洲va在线观看| 精品国产乱码久久久久久一区二区| 综合久久五月天| 亚洲成年人片| 欧美精品伊人久久| 福利在线一区| 激情無極限的亚洲一区免费| 中国美女**毛片录像在线 | 亚洲精选高清无码| 免费无码又爽又黄又刺激网站| 91久久偷偷做嫩草影院精品| 亚洲欧美日韩中文字幕在线| 九九九精品成人免费视频7| 97se亚洲综合不卡| 国产人成午夜免费看| 国产精品毛片一区| 无码专区第一页| 免费看av在线网站网址| a级毛片在线免费| 六月婷婷精品视频在线观看| 日韩黄色大片免费看| 国产va视频| 国产成人区在线观看视频| 国产成人禁片在线观看| 亚洲精品天堂自在久久77| 91精品啪在线观看国产| 欧美一道本| 91色爱欧美精品www| a在线观看免费| 精品少妇人妻无码久久| 色悠久久久久久久综合网伊人| 91免费精品国偷自产在线在线| 免费无码一区二区| 亚洲欧美综合精品久久成人网| 午夜日本永久乱码免费播放片| 欧美三级视频在线播放| 欧美日韩中文国产| 国语少妇高潮| 国产精品久久久久久久久久98| 免费va国产在线观看| 亚洲三级影院| 青青操国产|