mybatis SqlSessionDaoSupport的使用(附代码下载)(转)
2013-10-17 13:10
465 查看
前面的系列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
![](https://oscdn.geek-share.com/Uploads/Images/Content/201609/a4ea7a8a8dd7dee8a94e0b7eba22db87.gif)
程序代码
package com.yihaomen.dao;
import java.util.List;
import com.yihaomen.model.Article;
public interface UserDAO {
public List<Article> getUserArticles(int userid);
}
![](https://oscdn.geek-share.com/Uploads/Images/Content/201609/a4ea7a8a8dd7dee8a94e0b7eba22db87.gif)
程序代码
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 List<Article> getUserArticles(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 配置文件中加入<context:component-scan base-package="com.yihaomen.dao" /> 这样在需要调用的地方,就可以使用autowire自动注入了。
当然,你也可以按一般程序的思路,创建一个service 的package, 用service 去调用 dao层,我这里就没有做了,因为比较简单,用类似的方法,也机注意自动注入时,也要配置 <context:component-scan base-package="com.yihaomen.service" /> 等这样的。
在controller层中测试,直接调用dao层方法
在controller中加入方法:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201609/a4ea7a8a8dd7dee8a94e0b7eba22db87.gif)
程序代码
@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;
}
这样可以得到同样的结果,而且满足了一般程序的设计方法.代码结构如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201609/b6a7691934db311eb03222d4544dc4dc.jpg)
完成后,程序代码下载.
![](https://oscdn.geek-share.com/Uploads/Images/Content/201609/ad790badf064c6ad764ee277b7bf82f0.gif)
点击下载此文件
在此之前,请下载 上一篇文章提供的代码:http://www.yihaomen.com/article/java/326.htm
首先创建一个com.yihaomen.dao的package.然后在里面分别创建接口UserDAO,以及实现该接口的UserDAOImpl
![](https://oscdn.geek-share.com/Uploads/Images/Content/201609/a4ea7a8a8dd7dee8a94e0b7eba22db87.gif)
程序代码
package com.yihaomen.dao;
import java.util.List;
import com.yihaomen.model.Article;
public interface UserDAO {
public List<Article> getUserArticles(int userid);
}
![](https://oscdn.geek-share.com/Uploads/Images/Content/201609/a4ea7a8a8dd7dee8a94e0b7eba22db87.gif)
程序代码
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 List<Article> getUserArticles(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 配置文件中加入<context:component-scan base-package="com.yihaomen.dao" /> 这样在需要调用的地方,就可以使用autowire自动注入了。
当然,你也可以按一般程序的思路,创建一个service 的package, 用service 去调用 dao层,我这里就没有做了,因为比较简单,用类似的方法,也机注意自动注入时,也要配置 <context:component-scan base-package="com.yihaomen.service" /> 等这样的。
在controller层中测试,直接调用dao层方法
在controller中加入方法:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201609/a4ea7a8a8dd7dee8a94e0b7eba22db87.gif)
程序代码
@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;
}
这样可以得到同样的结果,而且满足了一般程序的设计方法.代码结构如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201609/b6a7691934db311eb03222d4544dc4dc.jpg)
完成后,程序代码下载.
![](https://oscdn.geek-share.com/Uploads/Images/Content/201609/ad790badf064c6ad764ee277b7bf82f0.gif)
点击下载此文件
相关文章推荐
- mybatis SqlSessionDaoSupport的使用(附代码下载)
- mybatis SqlSessionDaoSupport的使用
- mybatis实战教程(mybatis in action)之十:mybatis SqlSessionSupport 的使用,构件DAO 层的应用
- MyBatis3-SqlSessionDaoSupport的使用
- MyBatis中如何通过继承SqlSessionDaoSupport来编写DAO(二) 推荐
- MyBatis中如何通过继承SqlSessionDaoSupport来编写DAO
- MyBatis中如何通过继承SqlSessionDaoSupport来编写DAO(一) 推荐
- MyBatis + Spring 基于SqlSessionDaoSupport的泛型基类
- MyBatis中如何通过继承SqlSessionDaoSupport来编写DAO(一)
- javaWeb项目SpringMVC3.2.1与Mybatis3.0.4整合实例(Mybaits-spring配置文件的几种方式)之一SqlSessionDaoSupport方式
- Mybatis事务详细配置 (SqlSessionDaoSupport方式, 已经经过验证 )
- 继承HibernateDaoSupport后,获得session 并使用session操作sql的方法
- 当Dao层继承了HibernateDaoSupport,使用底层SQL语句,session获取的方法,以及解决关联查询no session的问题
- mybatis 整合spring mv SqlSessionDaoSupport
- 解决mybatis继承SqlSessionDaoSupport方式操作数据库不打印sql日志的问题。
- SqlSessionDaoSupport与SqlSessionTemplate对比
- 03_MyBatis基本查询,mapper文件的定义,测试代码的编写,resultMap配置返回值,sql片段配置,select标签标签中的内容介绍,配置使用二级缓存,使用别名的数据类型,条件查询ma
- (ThreadLocal版本)Mybatis使用拦截器自动分页实现/使用反射替换sql代码分页
- 03_MyBatis基本查询,mapper文件的定义,测试代码的编写,resultMap配置返回值,sql片段配置,select标签标签中的内容介绍,配置使用二级缓存,使用别名的数据类型,条件查询ma
- Mybatis3.2.1使用例四:SqlSession方式集成Spring、不使用DAO辅助类