以下内容引用自http://www.yihaomen.com/article/java/336.htm

在MyBatis3中这个Mapper接口貌似充当了以前在iBatis2中的DAO层的作用。但事实上,如果有这个Mapper接口不能完成的工作,或者需要更复杂的扩展的时候,就需要自己的DAO层. 事实上MyBatis3也是支持DAO层设计的,类似于iBatis 2。

在此之前,将使用上一章http://www.cnblogs.com/EasonJim/p/7056270.html使用的例子代码。

实现步骤如下:

1、首先创建一个com.jsoft.testmybatis.dao的package然后在里面分别创建接口UserDAO,以及实现该接口的UserDAOImpl。

package com.jsoft.testmybatis.dao;

import java.util.List;
import com.jsoft.testmybatis.models.Article; public interface UserDAO {
public List<Article> getUserArticles(int userid);
}
package com.jsoft.testmybatis.dao;

import java.util.List;

import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.support.SqlSessionDaoSupport;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Repository;
import com.jsoft.testmybatis.models.Article; @Repository
public class UserDAOImpl extends SqlSessionDaoSupport implements UserDAO { @Autowired(required = false)
@Qualifier("sqlSessionFactory")
public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) {
super.setSqlSessionFactory(sqlSessionFactory);
} @Override
public List<Article> getUserArticles(int userid) {
return this.getSqlSession().selectList("com.jsoft.testmybatis.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.jsoft.testmybatis.dao" /> 这样在需要调用的地方,就可以使用@Autowire自动注入。

因此,在spring-mvc-servlet.xml中配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <context:component-scan base-package="com.jsoft.testmybatis.controller" />
<context:component-scan base-package="com.jsoft.testmybatis.dao" /> <context:annotation-config /> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix">
<value>/WEB-INF/jsp/</value>
</property>
<property name="suffix">
<value>.jsp</value>
</property>
</bean> </beans>

当然,也可以按一般程序的思路,创建一个service的package, 用service去调用dao层,用类似的方法,注意自动注入时,也要配置<context:component-scan base-package="com.jsoft.testmybatis.service" /> 等这样的。

2、在controller层中测试,直接调用dao层方法

    @Autowired
UserDAO userDAO; @RequestMapping("/daolist")
public ModelAndView listalldao(HttpServletRequest request,HttpServletResponse response){
List<Article> articles=userDAO.getUserArticles(1);
ModelAndView mav=new ModelAndView("/article/list");
mav.addObject("articles",articles);
return mav;
}

3、整体的项目结构如下:

测试工程:https://github.com/easonjim/5_java_example/tree/master/mybatis/test10

MyBatis3-SqlSessionDaoSupport的使用的更多相关文章

  1. Spring3 整合MyBatis3 配置多数据源 动态选择SqlSessionFactory

    一.摘要 上两篇文章分别介绍了Spring3.3 整合 Hibernate3.MyBatis3.2 配置多数据源/动态切换数据源 方法 和 Spring3 整合Hibernate3.5 动态切换Ses ...

  2. Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(三)

    前两章我为大家详细介绍了如何搭建Maven环境.Spring MVC的流程结构.Spring MVC与Struts2的区别以及示例中的一些配置文件的分析.在这一章,我就对示例的层次结构进行说明,以及M ...

  3. MyBatis3与Spring3无缝集成-从iBatis平滑过渡

    从2010开始接触iBatis到现在,一直到现在把iBatis作为数据访问层ORM.为了演示一个Web应用,今天又搭了个SpringMVC应用,由于应用比较简单,Spring版本直接用最新版本3.2. ...

  4. MyBatis SqlSessionDaoSupport实例

    在前面的章节中,我们已经讲到了基本的 mybatis 操作,但都是基于 mapper 隐射操作的,在 mybatis3 中这个 mapper 接口貌似充当了以前在ibatis 2中的 DAO 层的作用 ...

  5. SSM整合(三):Spring4与Mybatis3与SpringMVC整合

    源码下载 SSMDemo 上一节整合了Mybatis3与Spring4,接下来整合SpringMVC! 说明:整合SpringMVC必须是在web项目中,所以前期,新建的就是web项目! 本节全部采用 ...

  6. SSM整合(二):Spring4与Mybatis3整合

    上一节测试好了Mybatis3,接下来整合Spring4! 一.添加spring上下文配置 在src/main/resources/目录下的spring新建spring上下文配置文件applicati ...

  7. SSM集成(一):Mybatis3测试

    Spring4+Mybatis3+SpringMVC(基于注解)整合步聚: 一)Mybatis3测试; 二)Mybatis3+Spring4整合; 三)Mybatis3+Spring4+SpringM ...

  8. 基于Spring4+SpringMVC4+Mybatis3+Hibernate4+Junit4框架构建高性能企业级的部标GPS监控平台

    开发企业级的部标GPS监控平台,投入的开发力量很大,开发周期也很长,选择主流的开发语言以及成熟的开源技术框架来构建基础平台,是最恰当不过的事情,在设计之初就避免掉了技术选型的风险,避免以后在开发过程中 ...

  9. Mybatis3.x与Spring4.x整合(转)

    http://www.cnblogs.com/xdp-gacl/p/4271627.html 一.搭建开发环境 1.1.使用Maven创建Web项目 执行如下命令: mvn archetype:cre ...

  10. MyBatis入门学习教程-Mybatis3.x与Spring4.x整合

    一.搭建开发环境 1.1.使用Maven创建Web项目 执行如下命令: mvn archetype:create -DgroupId=me.gacl -DartifactId=spring4-myba ...

随机推荐

  1. 二分图最大匹配(匈牙利算法) URAL 1721 Two Sides of the Same Coin

    题目传送门 /* 题意:三种人,statements,testdata,anthing.要求两个人能完成s和t两个工作,且rank相差2 二分图匹配:此题学习建图技巧,两个集和内部一定没有边相连,ra ...

  2. apache-storm-0.9.6.tar.gz的集群搭建(3节点)(图文详解)

    不多说,直接上干货! Storm的版本选取 我这里,是选用apache-storm-0.9.6.tar.gz Storm的本地模式安装 本地模式在一个进程里面模拟一个storm集群的所有功能, 这对开 ...

  3. RS485通信和Modbus协议(转)

    转自:http://www.51hei.com/bbs/dpj-23230-1.html 在工业控制.电力通讯.智能仪表等领域,通常情况下是采用串口通信的方式进行数据交换.最初采用的方式是RS232接 ...

  4. [ Nowcoder Contest 167 #C ] 部分和

    \(\\\) \(Description\) 给出一个长度为\(N\)的数组\(A[i]\),保证\(N\)为 \(2\) 的整次幂. 对于每个 \(i\ (i\in [0,N))\)求所有满足\(( ...

  5. oracle dos命令

    1.无账户密码登录数据库:sqlplus/nolog 后面不能加分号,否则不能识别 2.登录数据库:sqlplus 3.在sql下测试连接性:conn oracle_name/oracle_passw ...

  6. [Windows Server 2008] IP安全策略限制端口方法

    ★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com ★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频. ★ 本节我们将带领大家:限制143 ...

  7. ios 布局 素材 待整理

    https://www.cnblogs.com/fxwl/p/5961372.html div区域 8.盒子模型的相关属性 margin(外边距/边界) border(边框) padding(内边距/ ...

  8. 机器学习_K近邻Python代码详解

    k近邻优点:精度高.对异常值不敏感.无数据输入假定:k近邻缺点:计算复杂度高.空间复杂度高 import numpy as npimport operatorfrom os import listdi ...

  9. es6常用的语法

    刚开始用vue或者react,很多时候我们都会把ES6这个大兄弟加入我们的技术栈中.但是ES6那么多那么多特性,我们需要全部都掌握吗?秉着二八原则,掌握好常用的,有用的这个可以让我们快速起飞. 接下来 ...

  10. JAVA程序员面试笔试宝典1

    1.为什么Java中有些接口没有任何方法? 这些没有任何方法声明的接口又被称为标识接口,标识接口对于实现它的类没有任何语义上的要求,它仅仅充当一个标识的作用,用来表明它的类属于一个特定的类型. 2.j ...