1. 程式人生 > >Mybatis入門及於hibernate的區別

Mybatis入門及於hibernate的區別

pojo:不按mvc分層,只是java bean有一些屬性,還有get set方法
domain:不按mvc分層,只是java bean有一些屬性,還有get set方法
po:用在持久層,還可以再增加或者修改的時候,從頁面直接傳入action中,它裡面的java bean 類名等於表名,
屬性名等於表的欄位名,還有對應的get set方法
vo: view object表現層物件,主要用於在高階查詢中從頁面接收傳過來的各種引數.好處是擴充套件性強
bo: 用在servie層,現在企業基本不用.
這些po,vo, bo,pojo可以用在各種層面嗎
可以,也就是po用在表現層,vo用在持久層不報錯,因為都是普通的java bean沒有語法錯誤.
但是在企業最好不要混著用,因為這些都是設計的原則,混著用比較亂.不利於程式碼維護.

自學方法論: 理論 -> 實踐 -> 理論 -> 實踐 反覆迭代三遍

總結:
1. mybatis是一個持久層框架, 作用是跟資料庫互動完成增刪改查
2.原生Dao實現(需要介面和實現類)
4.動態代理方式(只需要介面)
mapper介面代理實現編寫規則:
1) 對映檔案中namespace要等於介面的全路徑名稱
2) 對映檔案中sql語句id要等於介面的方法名稱
3) 對映檔案中傳入引數型別要等於介面方法的傳入引數型別
4) 對映檔案中返回結果集型別要等於介面方法的返回值型別

5. #{}佔位符:佔位
如果傳入的是基本型別,那麼#{}中的變數名稱可以隨意寫
如果傳入的引數是pojo型別,那麼#{}中的變數名稱必須是pojo中的屬性.屬性.屬性...

6. ${}拼接符:字串原樣拼接
如果傳入的是基本型別,那麼${}中的變數名必須是value
如果傳入的引數是pojo型別,那麼${}中的變數名稱必須是pojo中的屬性.屬性.屬性...
注意:使用拼接符有可能造成sql注入,在頁面輸入的時候可以加入校驗,不可輸入sql關鍵字,不可輸入空格
7. 對映檔案:
1)傳入引數型別通過parameterType屬性指定
2)返回結果集型別通過resultType屬性指定
8. hibernate和mybatis區別:
hibernate:它是一個標準的orm框架,比較重量級,學習成本高.
優點:高度封裝,使用起來不用寫sql,開發的時候,會減低開發週期.
缺點:sql語句無法優化
應用場景:oa(辦公自動化系統), erp(企業的流程系統)等,還有一些政府專案,
總的來說,在用於量不大,併發量小的時候使用.
mybatis:它不是一個orm框架, 它是對jdbc的輕量級封裝, 學習成本低,比較簡單
有點:學習成本低, sql語句可以優化, 執行效率高,速度快
缺點:編碼量較大,會拖慢開發週期
應用場景: 網際網路專案,比如電商,P2p等
總的來說是使用者量較大,併發高的專案.