<kbd id="9plqc"><label id="9plqc"></label></kbd>

        <th id="9plqc"></th>
        1. <center id="9plqc"><video id="9plqc"></video></center>
          <sub id="9plqc"><form id="9plqc"><pre id="9plqc"></pre></form></sub>
          <nav id="9plqc"><form id="9plqc"><legend id="9plqc"></legend></form></nav>
          【MyBatis】MyBatis的前世今生與環(huán)境搭建 您所在的位置:網(wǎng)站首頁 屬羊的和屬鼠的能在一起嗎女 【MyBatis】MyBatis的前世今生與環(huán)境搭建

          【MyBatis】MyBatis的前世今生與環(huán)境搭建

          2024-06-01 13:02| 來源: 網(wǎng)絡(luò)整理| 查看: 265

          MyBatis的前世今生與環(huán)境搭建 本文已收錄于專欄 ?? 《MyBatis》??

          學(xué)習(xí)指南: MyBatis的前世今生與環(huán)境搭建什么是MyBatis?前世今生整體架構(gòu)基礎(chǔ)支持層核心處理層接口層 環(huán)境搭建 完結(jié)散花參考文獻(xiàn)

          什么是MyBatis?

          MyBatis是一款優(yōu)秀的持久層框架,它支持定制化SQL、存儲(chǔ)過程以及高級(jí)映射。

          MyBatis避免了幾乎所有的JDBC代碼和手動(dòng)設(shè)置參數(shù)以及獲取結(jié)果集。

          MyBatis可以使用簡(jiǎn)單的XML或注解來配置和映射原生類型、集合接口以及Java的POJO(Plain Old Java Objects,普通老式 Java 對(duì)象)為數(shù)據(jù)庫中的記錄。

          MyBatis中文網(wǎng):https://mybatis.net.cn/index.html

          可以簡(jiǎn)單的理解為:Mybatis 本身抽象了大量的 JDBC 冗余代碼,同時(shí)基于對(duì)象關(guān)系映射模型,向外提供了一套靈活易用的 API 和數(shù)據(jù)庫做交互。

          前世今生

          ORM映射模型

          用于JDBC 書寫時(shí)需要開發(fā)編寫過多的代碼,作所有對(duì)象,既麻煩還特別容易出錯(cuò),所以在我們實(shí)際開發(fā)中很少直接使用 JDBC 進(jìn)行編程,于是ORM 的登臺(tái)顯得尤為重要,ORM 全稱是 Object/Relation Mapping:表示 對(duì)象-關(guān)系映射 的縮寫。

          ORM模型 ,簡(jiǎn)單來說,就是數(shù)據(jù)庫的表和簡(jiǎn)單 Java 對(duì)象的映射關(guān)系模型。采用ORM框架后,應(yīng)用程序不再直接訪問底層數(shù)據(jù)庫,而是以 面向?qū)ο?的方式來作持久化對(duì)象,而ORM框架則將這些面向?qū)ο蟮淖鬓D(zhuǎn)換成底層SQL作。ORM框架實(shí)現(xiàn)的效果:把對(duì)持久化對(duì)象的保存、修改、刪除 等作,轉(zhuǎn)換為對(duì)數(shù)據(jù)庫的作。

          Hibernate模型開發(fā)過程

          最初 SUN 公司推出了 Java EE 服務(wù)器端組件模型(EJB),不過由于EJB 配置過于復(fù)雜,且適應(yīng)范圍小于是很快就被淘汰。后來封裝度極高、開發(fā)效率極高、全表映射的 ORM 持久層框架Hibernate 出現(xiàn),成為了當(dāng)時(shí)首選的 Java ORM 模型框架。

          但是隨著互聯(lián)網(wǎng)的極速發(fā)展、復(fù)雜業(yè)務(wù)場(chǎng)景的不斷涌現(xiàn),Hibernate 在許多方面慢慢暴露出了缺點(diǎn):靈活性不夠、無法根據(jù)不同條件組裝不同SQL、對(duì)多表關(guān)聯(lián)和復(fù)雜SQL查詢支持較差、SQL優(yōu)化和性能差、全表映射帶來的不便等等。

          MybatisLogo

          于是 Mybatis 框架應(yīng)運(yùn)而生,彌補(bǔ)了Hibernate的不足,不僅簡(jiǎn)單易用,而且具有高度靈活、可優(yōu)化、易維護(hù)等特點(diǎn),成為如今大型互聯(lián)網(wǎng)項(xiàng)目的首選框架。

          Mybatis 前身是 iBATIS,2001年由Clinton Begin發(fā)起的一個(gè)開源項(xiàng)目,最初側(cè)重于密碼軟件的開發(fā),后來發(fā)展成為一款基于Java的持久層框架.

          2004年,Clinton 將 iBATIS 的名字和源碼捐贈(zèng)給 Apache 軟件基金會(huì),接下來的6年中,開源軟件世界發(fā)生了巨大的變化,一切開發(fā)實(shí)踐、基礎(chǔ)設(shè)施、許可,甚至數(shù)據(jù)庫技術(shù)都徹底改變了。

          在2010年6月,核心開發(fā)團(tuán)隊(duì)把這個(gè)項(xiàng)目由 apache software foundation 遷移到了google code,隨著開發(fā)團(tuán)隊(duì)轉(zhuǎn)投 Google Code 旗下,ibatis3.x 正式更名為 Mybatis .

          代碼于2013年11月遷移到 Github 。

          整體架構(gòu)

          Mybatis整體架構(gòu)圖

          MyBatis 的整體架構(gòu)分為三層, 分別是基礎(chǔ)支持層、核心處理層和接口層:

          img

          基礎(chǔ)支持層

          [外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-e6JXtCy1-1661134584360)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20220822101149645.png)]

          核心處理層

          [外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-0BtKgWdn-1661134514233)(C:\Users\Lenovo\AppData\Roaming\Typora\typora-user-images\image-20220822101203981.png)]

          MyBatis 執(zhí)行一條SQL 語句的大致過程:

          img

          接口層

          核心是SqlSession 接口,該接口中定義了MyBatis 暴露給應(yīng)用程序調(diào)用的API ,也就是上層應(yīng)用與MyBatis 交互的橋梁。接口層在接收到調(diào)用請(qǐng)求時(shí),會(huì)調(diào)用核心處理層的相應(yīng)模塊來完成具體的數(shù)據(jù)庫作。

          環(huán)境搭建

          默認(rèn)已安裝 Java 開發(fā)環(huán)境、Mysql數(shù)據(jù)庫、Maven 環(huán)境。

          Mybatis 開發(fā)與環(huán)境搭建,我們先入門體驗(yàn),步驟如下:

          1、創(chuàng)建 maven 工程

          2、添加 MyBatis 倉庫坐標(biāo)(非maven項(xiàng)目則引入jar包)

          3、創(chuàng)建user數(shù)據(jù)表

          4、編寫User實(shí)體類

          5、編寫映射文件UserMapper.xml

          6、編寫核心文件SqlMapConfig.xml

          7、編寫測(cè)試類

          創(chuàng)建 maven 工程

          創(chuàng)建maven工程

          添加 MyBatis 倉庫坐標(biāo)

          org.mybatis mybatis 3.4.5 mysql mysql-connector-java 5.1.6 runtime junit junit 4.12 test log4j log4j 1.2.12

          創(chuàng)建user數(shù)據(jù)表

          CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(50) DEFAULT NULL, `password` varchar(50) DEFAULT NULL, `birthday` varchar(50) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

          編寫User實(shí)體類

          package com.panshenlian.pojo; public class User { private int id; private String username; private String password; private String birthday; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getBirthday() { return birthday; } public void setBirthday(String birthday) { this.birthday = birthday; } @Override public String toString() { return "User{" + "id=" + id + ", username='" + username + '\'' + ", password='" + password + '\'' + ", birthday='" + birthday + '\'' + '}'; } } 編寫映射文件UserMapper.xml select * from User

          編寫核心文件SqlMapConfig.xml

          編寫測(cè)試類

          import com.panshenlian.pojo.User; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.junit.Test; import java.io.IOException; import java.io.InputStream; import java.util.List; public class MybatisTest { @Test public void testQueryUser01() throws IOException { //加載核心配置文件 InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml"); // 獲得sqlSession工廠對(duì)象 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream); //獲得sqlSession對(duì)象 SqlSession sqlSession = sqlSessionFactory.openSession(); // 執(zhí)行sql語句 List userList = sqlSession.selectList("userMapper.findAll"); // 打印結(jié)果 for (User user : userList) { System.out.println(user); } // 釋放資源 sqlSession.close(); } }

          最終通過 Junit 單元測(cè)試,運(yùn)行結(jié)果符合預(yù)期:

          img

          工程結(jié)構(gòu)參考:

          工程結(jié)構(gòu)參考

          完結(jié)散花

          ok以上就是對(duì) MyBatis 的前世今生與環(huán)境搭建的全部講解啦,很感謝你能看到這兒。如果有遺漏、錯(cuò)誤或者有更加通俗易懂的講解,歡迎小伙伴私信我,我后期再補(bǔ)充完善。

          參考文獻(xiàn)

          https://blog.csdn.net/qq_33369905

          https://blog.csdn.net/weixin_47872288/



          【本文地址】

          公司簡(jiǎn)介

          聯(lián)系我們

          今日新聞

          推薦新聞

          專題文章
            CopyRight 2018-2019 實(shí)驗(yàn)室設(shè)備網(wǎng) 版權(quán)所有
            黄色免费网站在线看,韩国精品在线观看,韩国美女一区二区,99国产热 双峰县| 乐山市| 灌阳县| 乌兰县| 清新县| 灵丘县| 乳山市| 钟山县| 大化| 泰宁县| 林周县| 香港| 老河口市| 和静县| 酒泉市| 德江县| 庄浪县| 社旗县| 德安县| 闸北区| 交城县| 康保县| 阆中市| 新河县| 岳池县| 莱芜市| 阆中市| 安泽县| 克拉玛依市| 广饶县| 库车县| 修文县| 汽车| 鄢陵县| 疏勒县| 固原市| 伊通| 包头市| 于田县| 六盘水市| 钟山县| http://444 http://444 http://444 http://444 http://444 http://444