亚洲精品久久久久久第一页-人妻少妇精彩视品一区二区三区-91国产自拍免费视频-免费一级a在线播放视频正片-少妇天天日天天射天天爽-国产大屁股喷水视频在线观看-操美女骚穴抽插性爱视频-亚洲 欧美 中文字幕 丝袜-成人免费无码片在线观看

有關(guān)mybatis知識(shí)點(diǎn)解析 mybatis調(diào)用存儲(chǔ)過程


有關(guān)mybatis知識(shí)點(diǎn)解析 mybatis調(diào)用存儲(chǔ)過程

文章插圖
MyBatis 是一款優(yōu)秀的持久層框架,一個(gè)半 ORM(對象關(guān)系映射)框架,它支持定制化 SQL、存儲(chǔ)過程以及高級(jí)映射 。MyBatis 避免了幾乎所有的 JDBC 代碼和手動(dòng)設(shè)置參數(shù)以及獲取結(jié)果集 。MyBatis 可以使用簡單的 XML 或注解來配置和映射原生類型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 對象)為數(shù)據(jù)庫中的記錄 。
ORM是什么 ORM(Object Relational Mapping),對象關(guān)系映射,是一種為了解決關(guān)系型數(shù)據(jù)庫數(shù)據(jù)與簡單Java對象(POJO)的映射關(guān)系的技術(shù) 。簡單的說,ORM是通過使用描述對象和數(shù)據(jù)庫之間映射的元數(shù)據(jù),將程序中的對象自動(dòng)持久化到關(guān)系型數(shù)據(jù)庫中 。
為什么說Mybatis是半自動(dòng)ORM映射工具?它與全自動(dòng)的區(qū)別在哪里? Hibernate屬于全自動(dòng)ORM映射工具,使用Hibernate查詢關(guān)聯(lián)對象或者關(guān)聯(lián)集合對象時(shí),可以根據(jù)對象關(guān)系模型直接獲取,所以它是全自動(dòng)的 。
而Mybatis在查詢關(guān)聯(lián)對象或關(guān)聯(lián)集合對象時(shí),需要手動(dòng)編寫sql來完成,所以,稱之為半自動(dòng)ORM映射工具 。
傳統(tǒng)JDBC開發(fā)存在的問題頻繁創(chuàng)建數(shù)據(jù)庫連接對象、釋放,容易造成系統(tǒng)資源浪費(fèi),影響系統(tǒng)性能 ??梢允褂眠B接池解決這個(gè)問題 。但是使用jdbc需要自己實(shí)現(xiàn)連接池 。sql語句定義、參數(shù)設(shè)置、結(jié)果集處理存在硬編碼 。實(shí)際項(xiàng)目中sql語句變化的可能性較大,一旦發(fā)生變化,需要修改java代碼,系統(tǒng)需要重新編譯,重新發(fā)布 。不好維護(hù) 。使用preparedStatement向占有位符號(hào)傳參數(shù)存在硬編碼,因?yàn)閟ql語句的where條件不一定,可能多也可能少,修改sql還要修改代碼,系統(tǒng)不易維護(hù) 。結(jié)果集處理存在重復(fù)代碼,處理麻煩 。如果可以映射成Java對象會(huì)比較方便 。JDBC編程有哪些不足之處,MyBatis是如何解決這些問題的?1、數(shù)據(jù)庫鏈接創(chuàng)建、釋放頻繁造成系統(tǒng)資源浪費(fèi)從而影響系統(tǒng)性能,如果使用數(shù)據(jù)庫連接池可解決此問題 。
解決:在mybatis-config.xml中配置數(shù)據(jù)鏈接池,使用連接池管理數(shù)據(jù)庫連接 。
2、Sql語句寫在代碼中造成代碼不易維護(hù),實(shí)際應(yīng)用sql變化的可能較大,sql變動(dòng)需要改變java代碼 。
解決:將Sql語句配置在XXXXmapper.xml文件中與java代碼分離 。
3、向sql語句傳參數(shù)麻煩,因?yàn)閟ql語句的where條件不一定,可能多也可能少,占位符需要和參數(shù)一一對應(yīng) 。
解決: Mybatis自動(dòng)將java對象映射至sql語句 。
4、對結(jié)果集解析麻煩,sql變化導(dǎo)致解析代碼變化,且解析前需要遍歷,如果能將數(shù)據(jù)庫記錄封裝成pojo對象解析比較方便 。
解決:Mybatis自動(dòng)將sql執(zhí)行結(jié)果映射至java對象 。
Mybatis優(yōu)缺點(diǎn)與傳統(tǒng)的數(shù)據(jù)庫訪問技術(shù)相比,ORM有以下優(yōu)點(diǎn):
基于SQL語句編程,相當(dāng)靈活,不會(huì)對應(yīng)用程序或者數(shù)據(jù)庫的現(xiàn)有設(shè)計(jì)造成任何影響,SQL寫在XML里,解除sql與程序代碼的耦合,便于統(tǒng)一管理;提供XML標(biāo)簽,支持編寫動(dòng)態(tài)SQL語句,并可重用與JDBC相比,減少了50%以上的代碼量,消除了JDBC大量冗余的代碼,不需要手動(dòng)開關(guān)連接很好的與各種數(shù)據(jù)庫兼容(因?yàn)镸yBatis使用JDBC來連接數(shù)據(jù)庫,所以只要JDBC支持的數(shù)據(jù)庫MyBatis都支持)提供映射標(biāo)簽,支持對象與數(shù)據(jù)庫的ORM字段關(guān)系映射;提供對象關(guān)系映射標(biāo)簽,支持對象關(guān)系組件維護(hù)能夠與Spring很好的集成缺點(diǎn)
SQL語句的編寫工作量較大,尤其當(dāng)字段多、關(guān)聯(lián)表多時(shí),對開發(fā)人員編寫SQL語句的功底有一定要求SQL語句依賴于數(shù)據(jù)庫,導(dǎo)致數(shù)據(jù)庫移植性差,不能隨意更換數(shù)據(jù)庫MyBatis框架適用場景MyBatis專注于SQL本身,是一個(gè)足夠靈活的DAO層解決方案 。對性能的要求很高,或者需求變化較多的項(xiàng)目,如互聯(lián)網(wǎng)項(xiàng)目,MyBatis將是不錯(cuò)的選擇 。Hibernate 和 MyBatis 的區(qū)別相同點(diǎn)


以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問題,請您及時(shí)就醫(yī)或請專業(yè)人士給予相關(guān)指導(dǎo)!

「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對您有所幫助: