在前面的章節中,我們已經講到了基本的 mybatis 操作,但都是基於 mapper 隱射操作的,在 mybatis3 中這個 mapper 介面貌似充當了以前在ibatis 2中的 DAO 層的作用。但事實上,如果有這個mapper介面不能完成的工作,或者需要更複雜的擴充套件的時候,我們就需要自己寫 DAO 層。 mybatis 3 也是支援 DAO 層設計的,類似於 ibatis2。下面我們結合一個範例來介紹。
首頁我們建立一個工程為:mybatis11,再建立一個 com.yihaomen.dao 包,然後在裡面分別建立介面UserDAO,並實現該介面 UserDAOImpl 。整個工程的目錄結構如下:
UserDao介面的程式碼如下:
package com.yiibai.dao; import java.util.List; import com.yiibai.pojo.Order; public interface UserDAO { public List<Order> getUserOrders(int userId); }UserDaoImpl 實現UserDao介面的程式碼如下:
package com.yiibai.dao; import java.util.List; import org.mybatis.spring.support.SqlSessionDaoSupport; import org.springframework.stereotype.Repository; import com.yiibai.pojo.Order; @Repository public class UserDAOImpl extends SqlSessionDaoSupport implements UserDAO { public List<Order> getUserOrders(int userId) { // TODO Auto-generated method stub return this.getSqlSession().selectList("com.yiibai.inter.IUser.getUserOrders",userId); } }控制類 UserController.java 的程式碼如下:
package com.yiibai.controller; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; import com.yiibai.dao.UserDAO; import com.yiibai.pojo.Order; import com.yiibai.util.Page; // http://localhost:8080/mybatis08-paging/user/orders @Controller @RequestMapping("/user") public class UserController { //UserMaper userMaper; @Autowired UserDAO userDao; /** * 某一個使用者下的所有訂單(Dao方式) * URL => http://localhost:8080/mybatis11/user/lists * * @param request * @param response * @return */ @RequestMapping("/lists") public ModelAndView listalldao(HttpServletRequest request, HttpServletResponse response) { List<Order> orders = this.userDao.getUserOrders(1); // 制定檢視 =>list.jsp ModelAndView mav = new ModelAndView("lists"); mav.addObject("orders", orders); return mav; } }下一步,我們執行檢驗結果(根據使用者ID,讀取這個使用者的所有訂單),開啟瀏覽器,輸入網址:http://localhost:8080/mybatis11/user/lists ,結果如下圖所示:
工程 mybatis11 的程式碼下載:http://pan.baidu.com/s/1sjrEL9V
Jar 包下載:http://pan.baidu.com/s/1bnyRJ9H