在前面的章節(jié)中,我們已經(jīng)講到了基本的 mybatis 操作,但都是基于 mapper 隱射操作的,在 mybatis3 中這個 mapper 接口貌似充當(dāng)了以前在ibatis 2中的 DAO 層的作用。但事實上,如果有這個mapper接口不能完成的工作,或者需要更復(fù)雜的擴(kuò)展的時候,我們就需要自己寫 DAO 層。 mybatis 3 也是支持 DAO 層設(shè)計的,類似于 ibatis2。下面我們結(jié)合一個實例來介紹。
首頁我們創(chuàng)建一個工程為:mybatis11,再創(chuàng)建一個 com.yihaomen.dao 包,然后在里面分別創(chuàng)建接口UserDAO,并實現(xiàn)該接口 UserDAOImpl 。整個工程的目錄結(jié)構(gòu)如下:

UserDao接口的代碼如下:
package com.yiibai.dao;
import java.util.List;
import com.yiibai.pojo.Order;
public interface UserDAO {
public List<Order> getUserOrders(int userId);
}
UserDaoImpl 實現(xiàn)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;
}
}
下一步,我們運行檢驗結(jié)果(根據(jù)用戶ID,讀取這個用戶的所有訂單),打開瀏覽器,輸入網(wǎng)址:http://localhost:8080/mybatis11/user/lists ,結(jié)果如下圖所示:

工程 mybatis11 的代碼下載:http://pan.baidu.com/s/1sjrEL9V
Jar 包下載:http://pan.baidu.com/s/1bnyRJ9H