MyBatis3-SqlSessionDaoSupport的使用

以下内容引用自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

时间: 2024-11-04 00:28:27

MyBatis3-SqlSessionDaoSupport的使用的相关文章

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

前两章我为大家详细介绍了如何搭建Maven环境.Spring MVC的流程结构.Spring MVC与Struts2的区别以及示例中的一些配置文件的分析.在这一章,我就对示例的层次结构进行说明,以及MyBatis的一些简单介绍. 本文不会对MyBatis作详细说明,大象还是假定阅读本文的朋友对MyBatis(ibatis)有最基本的了解,只有这样才能较好的理解本文的内容.关于MyBatis请查看它的官方文档及其它参考资料,本文不作详细讨论. 一.工程结构图      上面这是典型的Maven项目

MyBatis中如何通过继承SqlSessionDaoSupport来编写DAO(二)

(本文示例工程源代码下载地址:http://down.51cto.com/data/1975295) 在上一篇博文的最后,介绍了使用@PostConstruct注解标注StudentDao的init方法,这样在Spring完成依赖注入后此方法即会被Spring调用,从而也就完成了studentMapper的初始化工作. 如果只有StudentDao一个DAO类,这样做当然没有问题.不过在实际应用中,必定存在多个DAO类.每个DAO类的初始化方法,除了传入的映射器接口类型(如StudentMapp

对Mybatis3源码结构理解(每天不断完善中...)

一.mybatis简介 Mybatis是支持普通SQL查询查询.存储过程和高级映射的优秀持久层框架.Mybatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索.Mybatis使用简单的XML或注解用于配置和原始映射,将接口和java的POJOS(Plan old java Objects,普通的java对象)映射成数据库中的记录. 二.框架结构图 刚开始学习源码,有哪儿不对的地方还望指出,十分感谢! (20160810第一版,以mybatis-3.4.1为例) 三.暂无

mybatis3动态创建表,判断表是否存在,删除表

1.mybatis3动态创建表,判断表是否存在,删除表 mapper配置文件: <span style="font-size:18px;"><?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/

MyBatis中如何通过继承SqlSessionDaoSupport来编写DAO(一)

在MyBatis中,当我们编写好访问数据库的映射器接口后,MapperScannerConfigurer就能自动成批地帮助我们根据这些接口生成DAO对象(),然后我们再使用Spring把这些DAO对象注入到业务逻辑层的对象(Service类的对象).因此,在这种情况下的DAO层,我们几乎不用编写代码,而且也没有地方编写,因为只有接口.这固然方便,不过如果我们需要在DAO层写一些代码的话,这种方式就无能为力了.此时,MyBatis-Spring提供给我们的SqlSessionDaoSupport类

MyBatis 学习总结 05 Mybatis3.x与Spring3.x整合 OLD

本文通过加载mybatis-configuration.xml 文件来产生SqlSessionFactory,然后通过SqlSessionFactory去产生sqlSession,然后在通过 sqlSession对数据库表所映射的实体类进行增删改查操作.通过spring的DI和IOC,能产生对象并管理对象的声明周期,而sprig的AOP也能管理对象的事务.主要有两点: 1.需要spring通过单例的方式管理 SqlSessionFactory,并用 SqlSessionFactory 去创建 s

MyBatis3.4.0以上的分页插件错误:Could not find method on interface org.apache.ibatis.executor.statement.StatementHandler named prepare. Cause: java.lang.NoSuchMethodException: org.apache.ibatis.executor.stateme

错误: Could not find method on interface org.apache.ibatis.executor.statement.StatementHandler named prepare. Cause: java.lang.NoSuchMethodException: org.apache.ibatis.executor.statement.StatementHandler.prepare(java.sql.Connection)] with root cause 问题

Mybatis3+Spring4+SpringMVC4 整合【转】

首先在整合这个框架的时候,想想其一般的步骤是怎样的,先有个步骤之后,不至于在后面的搞混了,这样在整合的时候也比较清晰些. 然后我们就细细的一步一步来整合. 1  创建一个Web项目. 2  导入Mybatis3.Spring4.SpringMVC4.连接数据库(我使用的数据库是mysql)的jar包. 我所用的包:  spring-websocket-4.2.0.RELEASE.jar 3  创建Mybatis3.Spring4.SpringMVC4.连接数据库的配置文件. 4  配置web.x

SpringMVC4 + Spring + MyBatis3 【转】

本文使用最新版本(4.1.5)的springmvc+spring+mybatis,采用最间的配置方式来进行搭建. 1. web.xml 我们知道springmvc是基于Servlet: DispatcherServlet来处理分发请求的,所以我们需要先在web.xml文件中配置DispatcherServlet,而Spring的启动则是使用了监听器,所以需要配置spring的监听器: <?xml version="1.0" encoding="UTF-8"?&

MyBatis3整合Spring3、SpringMVC3

开发环境: System:Windows WebBrowser:IE6+.Firefox3+ JavaEE Server:tomcat5.0.2.8.tomcat6 IDE:eclipse.MyEclipse 8 Database:MySQL 开发依赖库: JavaEE5.Spring 3.0.5.Mybatis 3.0.4.myBatis-spring-1.0.junit4.8.2 Email:[email protected] Blog:http://blog.csdn.net/IBM_ho