【MyBatis】MyBatis的前世今生與環(huán)境搭建 | 您所在的位置:網(wǎng)站首頁 › 屬羊的和屬鼠的能在一起嗎女 › 【MyBatis】MyBatis的前世今生與環(huán)境搭建 |
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ù)庫做交互。 前世今生用于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ù)庫的作。 最初 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)化和性能差、全表映射帶來的不便等等。 于是 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)分為三層, 分別是基礎(chǔ)支持層、核心處理層和接口層: MyBatis 執(zhí)行一條SQL 語句的大致過程: 核心是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 工程添加 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ù)期: 工程結(jié)構(gòu)參考: ok以上就是對(duì) MyBatis 的前世今生與環(huán)境搭建的全部講解啦,很感謝你能看到這兒。如果有遺漏、錯(cuò)誤或者有更加通俗易懂的講解,歡迎小伙伴私信我,我后期再補(bǔ)充完善。 參考文獻(xiàn)https://blog.csdn.net/qq_33369905 https://blog.csdn.net/weixin_47872288/ |
今日新聞 |
推薦新聞 |
專題文章 |
CopyRight 2018-2019 實(shí)驗(yàn)室設(shè)備網(wǎng) 版權(quán)所有 |