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);}@Overridepublic 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层方法
@AutowiredUserDAO 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的使用相关推荐
- Spring3.2.8+Mybatis3.2.6 多数据源基于BaseDAO的配置
Spring3.2.8+Mybatis3.2.6 多数据源基于BaseDAO的配置 配置数据源为: MySQL5.5.6 H2Database 1.3.75 这个配置起来比较麻烦,本文这种方法有点麻烦 ...
- MyBatis中如何通过继承SqlSessionDaoSupport来编写DAO(二)
(本文示例工程源代码下载地址:http://down.51cto.com/data/1975295) 在上一篇博文的最后,介绍了使用@PostConstruct注解标注StudentDao的init方 ...
- MyBatis3.x和Spring3.x的整合
MyBatis3.x和Spring3.x的整合 2017/10/02 1.mybatis和spring整合的思路 1.让spring管理SqlSessionFactory 2.让spring管理map ...
- Spring3 整合MyBatis3 配置多数据源 动态选择SqlSessionFactory
一.摘要 上两篇文章分别介绍了Spring3.3 整合 Hibernate3.MyBatis3.2 配置多数据源/动态切换数据源 方法 和 Spring3 整合Hibernate3.5 动态切换Ses ...
- MyBatis3.1.1+Spring3.1.2+Struts2.3.4.1
地址:http://takeme.iteye.com/blog/1736320 MyBatis3.1.1+Spring3.1.2+Struts2.3.4.1 先来看目录结构 来看配置文件 appl ...
- Spring3+MyBatis3整合无法输出SQL语句问题的解决
2019独角兽企业重金招聘Python工程师标准>>> Spring3+MyBatis3整合无法输出SQL语句问题的解决 转载于:https://my.oschina.net/huh ...
- 在Mybatis3开发中与配置相关的7点体会
Mybatis3前身是Apche开源项目ibatis,后前移至google code改名为Mybatis,mybatis是Java持久化框架,关于Mybatis学习难度不大,熟悉JDBC编程的话,相信 ...
- MyBatis学习总结(八)——Mybatis3.x与Spring4.x整合
2019独角兽企业重金招聘Python工程师标准>>> 一.搭建开发环境 1.1.使用Maven创建Web项目 执行如下命令: mvn archetype:create -Dgrou ...
- MyBatis3 xml映射文件配置
MyBatis 就是针对 SQL 构建的,并且比普通的方法做的更好.与具有相同功能的 JDBC 代码进行对比,你会立即发现省掉了将近 95% 的代码. MyBatis3官方文档 http://www. ...
- Spring Mybatis实例SqlSessionDaoSupport混用xml配置和注解
2019独角兽企业重金招聘Python工程师标准>>> 一.表(这里用mysql,数据库名为yiibai) CREATE TABLE `user` (`id` int(10) UNS ...
最新文章
- JVM中的垃圾收集器
- 简要解释什么是Conv1d,Conv2d,Conv3d
- iOS开发-UITableView顶部图片下拉放大
- Oracle与Mysql主键、索引及分页的区别小结
- 死磕18个Java 8的日期处理,工作必用!
- (转)SQL操作全集
- c51单片机有几个终端语言,吃过大亏,才知道要从51单片机入手
- 华为全面启航计算战略:“鲲鹏+昇腾”双引擎
- libjpeg学习1:简单使用示例
- GNS3(1.下载与安装)
- vue 城市级联选择 distPicker
- cmd查看计算机用户密码,电脑WIFI密码哪里查看?Windows系统cmd命令一键查找历史已连接密码...
- Eureka Client 源码解析
- 实验吧 NSCTF web200
- 课程表的实现(基于强智科技教务系统)
- 大数据处理与分析方向主要干什么_大数据分析_方向_方法与工具
- c语言实现各种排序算法(作业:点名册排序)
- 如何在Axure中设置根据标签导航切换页面?
- SG函数求解 NIM游戏先手必胜必败问题
- 8205A TSSOP-8 6A20V双N沟道场效应锂电池保护IC
热门文章
- 蓝桥杯 BASIC-14 基础练习 时间转换
- 1121. Damn Single (25)-PAT甲级真题
- 蓝桥杯 ADV-167算法提高 快乐司机(贪心算法)
- 联合索引会创建几个索引_联合索引在B+Tree上的存储结构及数据查找方式
- linux 解压缩指令
- PERL 使用IO::Socket::INET模块实现socket编程
- BZOJ1324Exca王者之剑BZOJ1475方格取数——二分图最大独立集
- 切换输入法默认语言为英文
- Jenkins构建jmeter进行接口测试的一些配置
- 开机SystemServer到ActivityManagerService启动过程分析