亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇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)用,并通過一個(gè)實(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是一個(gè)支持普通SQL查詢、存儲(chǔ)過程以及高級映射的持久層框架,它消除了幾乎所有的JDBC代碼和參數(shù)的手動(dòng)設(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)系,自動(dòng)將Java應(yīng)用程序中的對象持久化到關(guān)系型數(shù)據(jù)庫的表中。ORM框架的工作原理如圖1所示。

        從圖1可以看出,使用ORM框架后,應(yīng)用程序不再直接訪問底層數(shù)據(jù)庫,而是以面向?qū)ο蟮姆绞絹聿僮鞒志没瘜ο?,而ORM框架則會(huì)通過映射關(guān)系將這些面向?qū)ο蟮牟僮鬓D(zhuǎn)換成底層的SQL操作。另外,MyBatis還可以配置動(dòng)態(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個(gè)步驟。

        (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í)行,可以加載多個(gè)配置文件,每個(gè)配置文件對應(yīng)數(shù)據(jù)庫中的一張表。

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

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

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

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

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

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

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

        MySQL是一個(gè)關(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ù)放在一個(gè)大倉庫內(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í)例

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

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

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

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

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

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

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

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

        (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)建一個(gè)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)行了流程分析,最后通過一個(gè)簡單的查找實(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.

        狠狠亚洲婷婷综合色香五月| 成在线人免费视频| 丁香五香天堂网| 野外三级国产在线观看| 蜜桃视频一区二区三区| 亚洲男女内射在线播放| 久久和欧洲码一码二码三码| 国产精品久久码一区二区 | 在线视频一区色| 看全色黄大色大片免费久久久| 日韩精品一区二区三区乱码| 免费看av在线网站网址| 亚洲欧洲高潮| 伊人久久婷婷综合五月97色| 亚洲一区二区国产激情| 久久久久久国产精品mv| 中字无码av电影在线观看网站 | 日韩av东京社区男人的天堂| 特黄aa级毛片免费视频播放| 亚洲天堂色婷婷一区二区| 国产一级内射视频在线观看 | 欧美人成人亚洲专区中文字幕| 国产三级在线观看性色av| 蜜桃av噜噜一区二区三区9| 少妇无码吹潮| 欧美成人免费看片一区| 一区二区三区在线日本视频| 97精品人人妻人人| 亚洲爆乳无码专区| 国产一区二区高清不卡在线| 国产精品一区二区性色| 在线亚洲欧美日韩精品专区| 国产在线视频h| 国产丝袜爆操在线观看| 欧美一区二区三区久久综| 久久91综合国产91久久精品| 少妇高潮免费在线观看| 国产高清av在线播放| 色av综合av综合无码网站| 亚洲视频一区二区三区免费 | 国产一区二区三区四区五区加勒比|