mybatis SqlSessionDaoSupport的使用(附代码下载)
前面的系列mybatis 文章,已经基本讲到了mybatis的操作,但都是基于mapper隐射操作的,在mybatis 3中这个mapper 接口貌似充当了以前在ibatis 2中的 DAO 层的作用。但事实上,如果有这个mapper接口不能完成的工作,或者需要更复杂的扩展的时候,你就需要自己的DAO 层. 事实上 mybatis 3 也是支持DAO 层设计的,类似于ibatis 2 .下面介绍下.
在此之前,请下载 上一篇文章提供的代码:http://www.yihaomen.com/article/java/326.htm
首先创建一个com.yihaomen.dao的package.然后在里面分别创建接口UserDAO,以及实现该接口的UserDAOImpl
package com.yihaomen.dao; import java.util.List; import com.yihaomen.model.Article; public interface UserDAO { public ListgetUserArticles(int userid); }
package com.yihaomen.dao; import java.util.List; import org.mybatis.spring.support.SqlSessionDaoSupport; import org.springframework.stereotype.Repository; import com.yihaomen.model.Article; @Repository public class UserDAOImpl extends SqlSessionDaoSupport implements UserDAO { @Override public ListgetUserArticles(int userid) { return this.getSqlSession().selectList("com.yihaomen.inter.IUserOperation.getUserArticles",userid); } }
执行的SQL 语句采用了命名空间+sql 语句id的方式,后面是参数.
注意继承了 "SqlSessionDaoSupport" ,利用方法 getSqlSession() 可以得到 SqlSessionTemplate ,从而可以执行各种sql语句,类似于hibernatetemplate一样,至少思路一样.
如果与spring 3 mvc 集成要用 autowire的话,在daoimpl 类上 加上注解 “@Repository” ,另外还需要在spring 配置文件中加入这样在需要调用的地方,就可以使用autowire自动注入了。
当然,你也可以按一般程序的思路,创建一个service 的package, 用service 去调用 dao层,我这里就没有做了,因为比较简单,用类似的方法,也机注意自动注入时,也要配置 等这样的。
在controller层中测试,直接调用dao层方法
@Autowired UserDAO userDAO; ....... @RequestMapping("/daolist") public ModelAndView listalldao(HttpServletRequest request,HttpServletResponse response){ List<article> articles=userDAO.getUserArticles(1); //制定视图,也就是list.jsp ModelAndView mav=new ModelAndView("list"); mav.addObject("articles",articles); return mav; }
From:一号门
Previous:第一次尝试视频托管服务(盛大云与酷6网)
Next:得到java list 中重复的部分
COMMENTS