mybatis實際上是一個更多關注sql語句的框架, 他的出現是想讓開發者更簡單的去操作資料庫。
與hibernate相比較, hibernate更多的是去sql化, 雖然hibernate也可以本地sql執行, hibernate更多的是關注與hql的編寫和物件映射的配置,
只要配置完了, hibernate有封裝好的函數可以幫你執行操作資料庫, 當然hibernate也是靠生產sql語句去實現操作資料庫的, 值得注意的是
hibernate可以很容易的去適應不同類別的資料庫, 只要配置更改一下就可以針對不同的資料庫生產不一樣的sql語句, hibernate的難點可能集中
于單雙邊和幾對幾po物件的配置問題。 所以說一定程度上來說hibernate掌握的門檻可能比mybatis要高一些。
回過頭來, mybatis相對Hibernate“O/R”而言, mybatis是一種“Sql Mapping”的ORM實現。
你只需要再mybatis的物件映射檔xml中寫好自己的sql語句, 並同時配置好入參和返回數值型別, 那麼mybatis就可以幫你po物件存到資料庫或者
將資料庫的資料映射到物件來, 那麼在使用mybatis的時候其實主要工作就是寫sql了, 然後就是一些配置規則的細枝末節。
今天我們要搭建mybatis, 並順便整合到我們spring項目中, spring項目就是我之前的博客中《springMvc+hibernate的web application的構建》所構建成功的專案。
1mybatis當然少不了回應的jar包, 3.2.7是我下載的jar包, 當然不是最新的, 最新我找了很久, 有的是因為jar下載的連結卡住了, 有的是因為csdn上下載的積分和c幣用光了。
下圖是我下載的jar包。
因為咱們這個spring項目是web項目, 直接丟到webContent下的lib裡面就好, 既可以在application中的main函數執行,
然後在項目的src下放入我們的設定檔, 設定檔如下:
設定檔的位置如下:
可以看到分為兩部分, 一部分是關於連接資料庫的, 另一部分是關於po配置的xml檔。
當然mybatis也需要jdbc.driver的, 然後po的xml會稍後展示。
現在我們需要做的是建立好資料庫的表, 以及po類的建立, 以及po對應下xml配置問題。
我們一個個來看下:
那麼, 現在大家就可以看見了, 通過參數類型的定義, 返回數值型別的定義, 我們在其他地方調用這個sql語句的時候就
可以實現我們的資料庫操作了。
不過在執行這個操作的時候, 我們應該先初始化好mybatis的設定檔, 以便載入mybatis。
這個時候我們的下面代碼就可以做到了:
當我們初始化好後, 就可以做我們想要的操作了。
那新的問題又來了, 我們如何將這個mybatis融入到我們的項目中呢?
其實方法有兩種,
1因為我們這個是spring項目, 所以可以再spring的設定檔中加入這個MybatisOfSpringUtil類, 之後需要的時候就可以通過
spring的上下文物件getBean方法獲得了。
2也就是我使用的方式, 從上面的這個方法可以看到sqlSessionFactory這個變數是靜態的, 且實現了單例模式的。 直接在要使用的
地方調用MybatisOfSpringUtil.getSessionFactory()就好。 不需要將這個類注入到spring中。
其實兩種方法都是可以的,一個是靠注入spring項目的時候初始化mybatis的設定檔,一個是靠第一次調用MybatisOfSpringUtil.getSessionFactory()
的時候去初始化mybatis設定檔。
當我們初始化好後,就可以在需要的時候調用了,也就意味在自己的項目中加好了mybatis框架。
我的調用是方式是:
當然這款代碼是dao層的代碼。有了這塊代碼,其他層就可以調用了,從service層到MVC的controller層。
現在我們看看是否能運行成功。
現在我先再資料庫加一條記錄,而我們的sql語句是根據主鍵來獲取物件。
所以參數為1的時候能查到資料庫資料,其他的時候就不能查詢到資料庫資料。
controller層我判斷查詢的物件是否為null,來分別返回不同的頁面。
controller層代碼是:
那麼id參數為1的時候coffe物件就不為null,其他的時候就為null。
我們再觀察頁面就知道mybatis是否起作用了。
我們先訪問: http://localhost:8080/springMvcOrm/anonymous.mvc?method=mybatisMethodTest&id=1
然後再訪問:http://localhost:8080/springMvcOrm/anonymous.mvc?method=mybatisMethodTest&id=6
ok,沒問題。說明mybatis就搭建成功了。
(轉自博客園)
· 學IT,就來中公優就業:http://www.ujiuye.com/
· 2017年【中公教育】特別推出2017年就業促進計畫,500萬就業基金助你成為IT達人
詳情請戳http://www.ujiuye.com/zt/jycj/?wt.bd=bgz
其實兩種方法都是可以的,一個是靠注入spring項目的時候初始化mybatis的設定檔,一個是靠第一次調用MybatisOfSpringUtil.getSessionFactory()
的時候去初始化mybatis設定檔。
當我們初始化好後,就可以在需要的時候調用了,也就意味在自己的項目中加好了mybatis框架。
我的調用是方式是:
當然這款代碼是dao層的代碼。有了這塊代碼,其他層就可以調用了,從service層到MVC的controller層。
現在我們看看是否能運行成功。
現在我先再資料庫加一條記錄,而我們的sql語句是根據主鍵來獲取物件。
所以參數為1的時候能查到資料庫資料,其他的時候就不能查詢到資料庫資料。
controller層我判斷查詢的物件是否為null,來分別返回不同的頁面。
controller層代碼是:
那麼id參數為1的時候coffe物件就不為null,其他的時候就為null。
我們再觀察頁面就知道mybatis是否起作用了。
我們先訪問: http://localhost:8080/springMvcOrm/anonymous.mvc?method=mybatisMethodTest&id=1
然後再訪問:http://localhost:8080/springMvcOrm/anonymous.mvc?method=mybatisMethodTest&id=6
ok,沒問題。說明mybatis就搭建成功了。
(轉自博客園)
· 學IT,就來中公優就業:http://www.ujiuye.com/
· 2017年【中公教育】特別推出2017年就業促進計畫,500萬就業基金助你成為IT達人
詳情請戳http://www.ujiuye.com/zt/jycj/?wt.bd=bgz