一、初識框架技術sql
二、搭建MyBatis環境數據庫
三、掌握MyBatis的核心API設計模式
四、掌握MyBatis的核心配置文件:主要用於配置數據庫鏈接和MyBatis運行時所需的各類特性緩存
五、掌握SQL映射文件(或者使用自動生成SQL映射文件的插件)tomcat
六、掌握MyBatis緩存session
七、Dao上級操做數據結構
八、掌握動態SQLmybatis
九、掌握MyBatis框架的優缺點和其使用場合架構
-----------------------------------------------------------------------------------------------------------------------mvc
---------------知識點詳情
-------------------------------------------------------------
一、初識框架技術
1.1什麼是框架
框架(Framework)是一個提供了可重用的公共結構的半成品,它成爲構建新的應用程序提供了極大的便利,更提供了可重用的設計;
1.2當前的主流框架
1.2.1 Struts2:
Struts2以Webwork設計思想爲核心,吸取了Struts框架的部分優勢,提供了一個更加整潔的基於MVC設計模式實現的Web應用程序框架。
它引入了幾個新的框架特性:從邏輯中分離出橫切關注點的攔截器,減小或者消除配置文件,貫穿整個框架的強大表達式語言,支持可重用的標籤API等。
Struts2充分利用了從其餘MVC框架學到的經驗和教訓,使整個框架更加清晰、靈活(引入了攔截器)。
1.2.2 Hibernate:
Hibernate是一個優秀的持久化框架(ORM),負責簡化將對象數據保存到數據庫中,或從數據庫中讀取數據並封裝到對象的工做。
Hibernate經過簡單配置和編碼便可替代JDBC繁瑣的程序代碼。
1.2.3Spring:
Spring是一個開源框架。它的目標是使現有的JavaEE技術更容易使用。
它只要做爲依賴注入容器和AOP實現存在,還提供了聲明式事務、對DAO層的支持等簡化開發等功能。
Spring能夠很方便地與SpringMVC、Struts二、Mybatis、Hibernate等框架集成。
1.2.4Spring MVC:
是Spring框架提供的構建Web應用程序的全功能MVC模塊,屬於Spring Framework的後續產品。
它擁有高度的可配置性,支持多種視圖技術,至關靈活。
Spring整合Springmvc是無縫集成,是一個高性能的架構模式。
1.2.5MyBatis:
MyBatis是一個很優秀的數據持久層框架(ORM),在實體類和SQL語句之間創建映射關係,是一種半自動化的ORM實現;
MyBatis的封裝性要低於Hibernate,性能優越,而且小巧;
二、搭建MyBatis環境
2.1什麼是數據持久化:將內存中的數據模型轉換爲存儲模型,以及將存儲模型轉換爲內存中的數據模型的統稱。
2.2什麼是ORM:
對象關係映射(Object Relational Mapping ORM)是一種數據持久化技術。
它在對象模型和關係型數據庫之間創建起對應關係,而且提供了一種機制,經過JavaBean對象去操做數據庫表中的數據。
2.3搭建MyBatis環境
2.3.一、下載 jar包&部署jar包,或在pom.xml添加jar包依賴 (mybatis-3.2.2.jar)
2.3.二、編寫配置文件
2.3.三、建立實體類(或者使用自動生成實體類的插件)
2.3.四、建立dao接口(或者使用自動生成dao接口的插件)
2.3.五、建立sql映射文件(或者使用自動生成sql映射文件的插件)
2.3.六、在業務邏輯層調用
三、掌握MyBatis的核心API
3.1SQLSessionFactoryBuilder:構建SQLSessionFactory
3.2SqlSessionFactory:該對象能夠完成對配置文件的讀取factory=new SqlSessionFactoryBuilder().build(is);
3.3SqlSession:該對象的做用是調用mapper文件進行數據庫操做
四、掌握MyBatis的核心配置文件:主要用於配置數據庫鏈接和MyBatis運行時所需的各類特性
properties
setting:引入log4j日誌配置
typeAliases:配置類型別名
envrionments:配置運行的環境
transactionManager:配置事務管理(JDBC)
dataSource:配置數據源(POOLED:mybatis自帶的數據源;JNDI:基於tomcat的數據源)
mappers:引入映射文件,告訴mybatis去哪裏找到SQL映射文件。
mapper標籤:是映射文件的根元素,只有一個屬性namespace-->用於區分不一樣的mapper,是全局惟一
五、掌握SQL映射文件(或者使用自動生成SQL映射文件的插件)
5.1select標籤:表示查詢語句
id屬性:該命名空間下惟一標識符。
resultType屬性:表示sql語句返回值類型。
本質是相同,都是Map數據結構,但不能同時存在。
5.2resultType與resultMap
resultType:直接表示返回類型,包括基本數據類型和複雜數據類型。
resultMap:應用場景通常是:數據庫字段信息與對象屬性不一致或者須要作複雜的聯合查詢,以便自由控制映射結構。
六、掌握MyBatis緩存
一級緩存:是mybatis自帶的本地緩存,做用範圍爲session的區域,當session flush或者close以後,該session中全部的cache就會被清空;
二級緩存:全局緩存,她超出了session範圍,能夠被全部的SQLSession共享,開啓它只須要mybatis的核心配置文件(mybatis-config.xml)的setting中設置便可;
2.1) <settings>
<setting name="cacheEnabled" value="true"/>
</settings>
2.2)默認是未開啓二級緩存,須要手動開啓。另外,它的做用域是針對mapper的namespace而言的,及只有在此namespace的查詢才能共享這個cache。
<mapper namespace="com.kgc.dao.UserMapper">
<!---cache配置-->
<cache eviction="fifo" flushInterval="60000" size="512" readOnly="true"/>
</mapper>
2.3)在mapper文件配置支持cache後,若是須要對個別查詢進行調整,能夠單獨設置cache
<select id="getUserList" resultType="User" useCache="true">
七、Dao上機操做
實現多參數傳遞:
@Param註解
通常超過4個以上的參數,最好封裝成對象入參 或者 map
insert、update、delete操做要注意什麼:
7.2.1接口方法的返回值爲int類型,表示執行sql語句影響的行數;
7.2.2均沒有resultType屬性;
事務處理:
7.3.1factory.openSession(faclse); 手動提交事務;
7.3.2session.commit(); 提交事務
7.3.3session.rollback(); 回滾事務
一對多的操做:使用association
多對一的操做:使用collection
八、掌握動態SQL
if:利用if實現簡單的條件選擇;
choose(when, otherwise):至關於Java中的switch語句,一般與when和otherwise搭配使用;
where:簡化SQL語句中的where的條件判斷;
set:解決動態更新語句;
trim:能夠靈活地除去多餘的關鍵字;
foreach:迭代一個集合;
九、掌握MyBatis框架的優缺點和其使用場合
9.1MyBatis框架的特色:
9.1.1與jdbc相比,減小了50%以上的代碼;
9.1.2Mybatis至關靈活,不會對應的應用程序或者數據庫的現有設計強加任何影響,
SQL寫在MXL裏,從代碼中完全分離,既下降耦合度,又便於統一管理和優化
9.2Mybatis框架的缺點
9.2.1SQL語句的編寫工做量比較大,對開發人員編寫SQL語句的功底有必定的要求;
9.2.2SQL語句依賴於數據庫,致使數據庫的移植性比較差,不能隨意更換數據庫;
9.3框架試用場合
9.3.1MyBatis專一於SQL自己,是一個足夠靈活的DAO層解決方案;
9.3.2對性能要求很高的項目,或者需求變化比較多的項目,如互聯網項目,MyBatis將是不錯的選擇;
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
還在完善中。。。