摘要:語句在代碼中硬編碼,造成代碼不易于維護,實際應(yīng)用變化的可能較大,變動需要改變代碼。對結(jié)果集解析存在硬編碼查詢列名,變化導致解析代碼變化,系統(tǒng)不易于維護,如果能將數(shù)據(jù)庫記錄封裝成對象解析比較方便。
MyBatis理解與掌握(簡介)
@(MyBatis)[Java, 框架, MyBatis]
簡介??Mybatis是一個數(shù)據(jù)持久層框架,MyBatis消除了幾乎所有的JDBC代碼和參數(shù)的手工設(shè)置以及結(jié)果集的檢索。MyBatis使用簡單的XML或者注解用于配置和原始映射,將接口和Java的POJO(Plain Old Java Objects,普通的 Java對象)映射成數(shù)據(jù)庫中的記錄通過一系列的XML配置文件,解耦了對象和存儲過程/SQL語句。
因為MyBatis面向的是SQL,所以有時也稱之為SQL映射器
(1)數(shù)據(jù)庫連接創(chuàng)建、釋放頻繁造成系統(tǒng)資源浪費 從而影響系統(tǒng)性能,如果使用數(shù)據(jù)庫連接池可解決此問題。
解決:在mybatis-config.xml中配置了數(shù)據(jù)連接池,方便使用了連接池管理數(shù)據(jù)庫鏈接。
(2)Sql語句在代碼中硬編碼 ,造成代碼不易于維護,實際應(yīng)用sql變化的可能較大,sql變動需要改變Java代碼。
解決:將Sql語句配置在映射文件(xxxmapper.xml)中,實現(xiàn)sql語句和Java代碼的分離。
(3)使用preparedStatement向占有位符號傳參數(shù)存在硬編碼 ,因為sql語句的where條件不一定,可能多也可能少,修改sql還需要修改代碼,系統(tǒng)不易于維護。
解決:Mybatis自動將Java對象映射至sql語句,通過statement中的parameterType定義輸入?yún)?shù)類型。
(4)對結(jié)果集解析存在硬編碼 (查詢列名),sql變化導致解析代碼變化,系統(tǒng)不易于維護,如果能將數(shù)據(jù)庫記錄封裝成pojo對象解析比較方便。
解決:Mybatis自動將sql執(zhí)行結(jié)果映射至Java對象,通過statement中的resultType定義輸出結(jié)果的類型。
Mybatis學習門檻低, 簡單易學 ,程序員直接編寫原生態(tài)sql,可嚴格控制sql執(zhí)行性能, 靈活度高 ,非常適合對關(guān)系數(shù)據(jù)模型要求不高的軟件開發(fā),例如互聯(lián)網(wǎng)軟件、企業(yè)運營類軟件等,因為這類軟件需求變化頻繁,一旦需求變化要求成果輸出迅速。
但是Mybatis 無法做到數(shù)據(jù)庫無關(guān)性 ,如果需要實現(xiàn)支持多種數(shù)據(jù)庫的軟件則需要自定義多套sql映射文件,工作量大。
Hibernate 對象/關(guān)系映射能力強 ,數(shù)據(jù)庫無關(guān)性好 ,對于關(guān)系模型要求高的軟件(例如需求固定的定制化軟件)如果用Hibernate開發(fā)可以節(jié)省很多代碼,提高效率。但是Hibernate 學習門檻高,要精通門檻更高,而且怎么設(shè)計O/R映射,在性能和對象模型之間如何權(quán)衡,以及怎么用好Hibernate需要具有很強的經(jīng)驗和能力才行。
總之,按照用戶的需求在有限的資源環(huán)境下只能做出威化擴展性良好的軟件架構(gòu)都是好架構(gòu),所以框架只有適合才是最好的。
配置文件區(qū)別:
hibernate:
主配置文件:數(shù)據(jù)庫連接信息,方言,映射文件信息
實體類配置文件:類和表之間的映射關(guān)系
Mybatis:
主配置文件:數(shù)據(jù)庫連接信息,映射文件信息
SQL映射文件:將執(zhí)行的SQL進行關(guān)聯(lián)映射
Mybatis和Hibernate不同,它不完全是一個ORM框架,因為Mybatis需要程序員自己編寫sql語句,不過Mybatis可以通過xml或注解方式靈活配置要運行的sql語句,并將Java對象和sql語句映射生成最終執(zhí)行的sql,最后將sql執(zhí)行的結(jié)果再映射生成Java對象
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/77065.html
摘要:的實例不是線程安全的,因此是不能被共享的,所以它的最佳的作用域是請求或方法作用域。下面的示例就是一個確保關(guān)閉的標準模式依賴注入框架可以創(chuàng)建線程安全的基于事務(wù)的和映射器并將它們直接注入到你的中,因此可以直接忽略它們的生命周期。 MyBatis理解與掌握(入門例子) @(MyBatis)[Java, 框架, MyBatis] 配置文件 mybatis-config.xml ...
摘要:理解與掌握緩存框架一級緩存默認就可以使用框架處理緩存是依賴映射,的內(nèi)部緩存使用一個,為語句。一級緩存的作用域是一個,一旦發(fā)生變化,一級緩存失敗在同一個中,執(zhí)行相同的查詢,第一次會去查詢數(shù)據(jù)庫,并寫到緩存中第二次直接從緩存中取。 MyBatis理解與掌握(緩存) @(MyBatis)[Java, 框架, MyBatis] 一級緩存(SqlSession) 默認就可以使用 框架處理緩存是 ...
摘要:輸入?yún)?shù)類型指定輸入?yún)?shù)類型,通過從輸入對象中獲取參數(shù)值放置在中。查詢結(jié)果處理指定輸出結(jié)果類型,將查詢結(jié)果的一行記錄數(shù)據(jù)映射為指定類型的對象。 MyBatis理解與掌握(輸入與輸出) @(MyBatis)[Java, 框架, MyBatis] 占位符和拼接 {}:占位符 能防止sql注入問題,所一能盡量用#{}就盡量用#{}用來傳入?yún)?shù),sql在解析的時候會加上 當成字符串來解析 ,...
摘要:容器自動完成裝載,默認的方式是這部分重點在常用模塊的使用以及的底層實現(xiàn)原理。 對于那些想面試高級 Java 崗位的同學來說,除了算法屬于比較「天方夜譚」的題目外,剩下針對實際工作的題目就屬于真正的本事了,熱門技術(shù)的細節(jié)和難點成為了主要考察的內(nèi)容。 這里說「天方夜譚」并不是說算法沒用,不切實際,而是想說算法平時其實很少用到,甚至面試官都對自己出的算法題一知半解。 這里總結(jié)打磨了 70 道...
摘要:理解與掌握動態(tài)框架就是簡單的條件判斷,利用語句我們可以實現(xiàn)某些簡單的條件選擇。有了元素我們就可以動態(tài)的更新那些修改了的字段。 MyBatis理解與掌握(動態(tài)SQL) @(MyBatis)[Java, 框架, MyBatis] if if 就是__簡單的條件判斷 __,利用if語句我們可以實現(xiàn)某些簡單的條件選擇。先來看如下一個例子: select * from user whe...
閱讀 3019·2021-11-24 10:21
閱讀 1588·2021-10-11 10:57
閱讀 2803·2021-09-22 15:24
閱讀 2659·2021-09-22 14:58
閱讀 2331·2019-08-30 13:16
閱讀 3478·2019-08-29 13:05
閱讀 3411·2019-08-29 12:14
閱讀 3440·2019-08-27 10:55