2.平凡之路-初识MyBatis
MyBatis 是支持定制化 SQL、存儲過程以及高級映射的優(yōu)秀的持久層框架。MyBatis 避免了幾乎所有的 JDBC 代碼和手動設(shè)置參數(shù)以及獲取結(jié)果集。MyBatis 可以對配置和原生Map使用簡單的 XML 或注解,將接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java對象)映射成數(shù)據(jù)庫中的記錄。[來自官方文檔]
1.MyBatis的優(yōu)點和缺點
-
優(yōu)點
易于上手和掌握。
sql寫在xml里,便于統(tǒng)一管理和優(yōu)化。
解除sql與程序代碼的耦合。
提供映射標簽,支持對象與數(shù)據(jù)庫的ORM字段關(guān)系映射
提供對象關(guān)系映射標簽,支持對象關(guān)系組建維護
提供xml標簽,支持編寫動態(tài)sql。
-
缺點
sql工作量很大,尤其是字段多、關(guān)聯(lián)表多時,更是如此。
sql依賴于數(shù)據(jù)庫,導(dǎo)致數(shù)據(jù)庫移植性差。
由于xml里標簽id必須唯一,導(dǎo)致DAO中方法不支持方法重載。[重點注意]
字段映射標簽和對象關(guān)系映射標簽僅僅是對映射關(guān)系的描述,具體實現(xiàn)仍然依賴于sql。(比如配置了一對多Collection標簽,如果sql里沒有join子表或查詢子表的話,查詢后返回的對象是不具備對象關(guān)系的,即Collection的對象為null)
DAO層過于簡單,對象組裝的工作量較大。
不支持級聯(lián)更新、級聯(lián)刪除。
編寫動態(tài)sql時,不方便調(diào)試,尤其邏輯復(fù)雜時。
提供的寫動態(tài)sql的xml標簽功能簡單(連struts都比不上),編寫動態(tài)sql仍然受限,且可讀性低。
若不查詢主鍵字段,容易造成查詢出的對象有“覆蓋”現(xiàn)象。
參數(shù)的數(shù)據(jù)類型支持不完善。(如參數(shù)為Date類型時,容易報沒有g(shù)et、set方法,需在參數(shù)上加@param)
多參數(shù)時,使用不方便,功能不夠強大。(目前支持的方法有map、對象、注解@param)
緩存使用不當(dāng),容易產(chǎn)生臟數(shù)據(jù)。二級緩存機制不佳,需要使用第三方的緩存框架。
2.MyBatis安裝
首先我們需要聲明一下iBatis和MyBatis都是一個組織開發(fā),只是版本不相同而已,就想我們學(xué)習(xí)的Java的版本命名規(guī)則類似,實際上MyBatis就是iBatis的一個大版本號的提升。
下載地址:https://github.com/mybatis/my...
官方文檔:http://www.mybatis.org/mybati...
3.MyBatis的環(huán)境搭建
(1) 新建Java項目
新建lib文件夾,導(dǎo)入mybatis-3.4.2.jar的框架核心包和MySQL的數(shù)據(jù)庫驅(qū)動包
選中兩個Jar包,右鍵選擇Bulid Path
(2) 新建MyBatis核心配置文件
個人建議將核心配置文件建立在mybatis-config.xml文件
新建核心xml文件
需要設(shè)置文檔類型
配置數(shù)據(jù)源
百度Java如何實行連接池的原理?
配置加載映射文件
附錄
(3) 新建MyBatis映射文件
位置建立: com/shxt/model/ShxtMapper.xml
建立映射文件頭部信息和命名空間
目前我們使用的傳統(tǒng)模式,那么namespace一般建議使用持久化類的全路徑com.shxt.model.User這樣的字符串保持一致,方便后面代碼處理.
但是,我們現(xiàn)在沒有持久化類,所以就是設(shè)置了一個簡單的字符串
定制SQL語句,簡單測試
附錄
(4) 測試代碼
public class API的調(diào)用過程演示 {public static void main( String[] args ) {//讀取核心配置文件的位置//InputStream is = Resources.getResourceAsStream("com/shxt/model/mybatis-config.xml");SqlSession sqlSession = null;try {//1.讀取核心配置文件InputStream is = Resources.getResourceAsStream("mybatis-config.xml");//2.創(chuàng)建SqlSession工廠SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);//3.獲取SqlSession //****** SqlSession完成所有的持久化操作CRUDsqlSession = sqlSessionFactory.openSession();//4.關(guān)鍵步驟: 定位執(zhí)行SQL語句 重點重點重點//****如何定位 (namespace+"."+id)int row = sqlSession.insert("shxt.cy42.mss.add01");//5.針對于CUD操作需要手動提交事務(wù)sqlSession.commit();System.out.println("影響的行數(shù):"+row);} catch (IOException ex) {ex.printStackTrace();}finally {//6.關(guān)閉資源if(sqlSession!=null){sqlSession.close();}}}}
總結(jié)
以上是生活随笔為你收集整理的2.平凡之路-初识MyBatis的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Word如何分栏
- 下一篇: 【Django】入门篇:项目创建(pyc