JavaWeb實戰(四)——加入MyBatis框架

上期說道Dao層中的SQL語句導致代碼複雜難以維護。

這期我們用Mybatis框架來實現持久化


我們先將sql語句提取出來。將DaoImpl中的sql語句提取到UserMapper.xml文件:

JavaWeb實戰(四)——加入MyBatis框架

將DaoImpl中的sql語句提取到UserMapper.xml文件

然後我們要怎麼取執行這個文件裏面的sql語句呢?

接觸過其他ORM框架的同學可能知道:Sqlsession是mybatis裏用於執行持久化操作的對象,類似於jdbc中的Connection,每一次操作數據庫都需要先獲取一個connection(關閉了之後)。Sqlsession也是每次執行語句都要先獲取一個Sqlsession。

創建Sqlsession的地方只有一個,那就是SqlsessionFactory(sql會話工廠)的openSession方法

所以我們可以知道,要使用Mybatis,第一步就需要產生SqlSessionFactory類的實例(相當於是產生連接池)。所以我們可以在產生sqlSessionFactory類的實例的時候將sql語句加載進來。大概代碼如下:

JavaWeb實戰(四)——加入MyBatis框架

加載xml文件

但是當UserMapper.xml之類的文件多了起來的時候,我們就不能只加載一個xml文件了。所以我們需要將所有的類似的文件統一放到一個配置文件裏。所以我們新建一個myBatis-config.xml文件:

JavaWeb實戰(四)——加入MyBatis框架

myBatis-config.xml

現在我們就可以用Mybatis進行數據庫操作了。我們修改UserDaoImpl.java和UserDao.java

將UserDao返回結果改爲User具體代碼如下:

JavaWeb實戰(四)——加入MyBatis框架

UserDao.java

UserDaoImpl實現類的數據庫連接可以刪掉了。具體代碼如下:

JavaWeb實戰(四)——加入MyBatis框架

UserDaoImpl.java

其他代碼不變。記得引入Mybatis的包。mybatis-3.4.2.jar或其他版本。具體效果就不演示了。

這樣我們就加入了Mybatis框架。但是我們會發現代碼還是比較多,其實Mybatis提供了一個MybatisGenerator項目。這個工程運行起來只要你數據庫建好表結構。

可以一鍵生成Dao、VO、*Mapper.xml。運行的效果如下:

JavaWeb實戰(四)——加入MyBatis框架

生成的文件

VO包含了所有的數據庫字段的get/set方法和初始化。Dao包含了幾個基本的增刪改查。XML包含了幾個增刪改查的sql語句。

下期我們就講講MybatisGenerator項目。

後面再將Spring、日誌、SpringMVC什麼的加進來。


下期再見!

PS:想找一個前端模板整個進來。不知道什麼好,有推薦的可以留言。