MyBatis SqlSessionDaoSupport实例
在前面的章节中,我们已经讲到了基本的 mybatis 操作,但都是基于 mapper 隐射操作的,在 mybatis3 中这个 mapper 接口貌似充当了以前在ibatis 2中的 DAO 层的作用。但事实上,如果有这个mapper接口不能完成的工作,或者需要更复杂的扩展的时候,我们就需要自己写 DAO 层。 mybatis 3 也是支持 DAO 层设计的,类似于 ibatis2。下面我们结合一个实例来介绍。
首页我们创建一个工程为:mybatis11,再创建一个 com.yihaomen.dao 包,然后在里面分别创建接口UserDAO,并实现该接口 UserDAOImpl 。整个工程的目录结构如下:

UserDao接口的代码如下:
package com.yiibai.dao;
import java.util.List;
import com.yiibai.pojo.Order;
public interface UserDAO {
public List<Order> getUserOrders(int userId);
}
UserDaoImpl 实现UserDao接口的代码如下:
package com.yiibai.dao; import java.util.List; import org.mybatis.spring.support.SqlSessionDaoSupport;
import org.springframework.stereotype.Repository; import com.yiibai.pojo.Order; @Repository
public class UserDAOImpl extends SqlSessionDaoSupport implements UserDAO {
public List<Order> getUserOrders(int userId) {
// TODO Auto-generated method stub
return this.getSqlSession().selectList("com.yiibai.inter.IUser.getUserOrders",userId);
}
}
控制类 UserController.java 的代码如下:
package com.yiibai.controller; import java.util.List; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView; import com.yiibai.dao.UserDAO;
import com.yiibai.pojo.Order;
import com.yiibai.util.Page; // http://localhost:8080/mybatis08-paging/user/orders
@Controller
@RequestMapping("/user")
public class UserController {
//UserMaper userMaper; @Autowired
UserDAO userDao; /**
* 某一个用户下的所有订单(Dao方式)
* URL => http://localhost:8080/mybatis11/user/lists
*
* @param request
* @param response
* @return
*/
@RequestMapping("/lists")
public ModelAndView listalldao(HttpServletRequest request,
HttpServletResponse response) {
List<Order> orders = this.userDao.getUserOrders(1);
// 制定视图 =>list.jsp
ModelAndView mav = new ModelAndView("lists");
mav.addObject("orders", orders);
return mav;
} }
下一步,我们运行检验结果(根据用户ID,读取这个用户的所有订单),打开浏览器,输入网址:http://localhost:8080/mybatis11/user/lists ,结果如下图所示:

MyBatis SqlSessionDaoSupport实例的更多相关文章
- spring+mybatis结合实例
1.通过上两篇文章的学习,大致了解了spring和mybatis的架构和使用原理,下面这篇文章就将给出两者结合的一个小实例,通过该实例进一步探索这两个框架的魅力,工程所需要的所有jar包都在链接:ht ...
- mybatis 学习笔记 -详解mybatis 及实例demo
快速入门1 要点: 首先明白mybatis 是什么 这是一个持久层的框架.之前叫做ibatis.所以,在它的代码中出现ibatis这个词的时候,不要感到惊讶.不是写错了,它确实就是这个样子的. 首先, ...
- Mybatis入门实例
MyBatis 简介 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis ...
- Springboot+Mybatis+MySQL实例练习时踩坑记录
最近刚开始学习后端,直接让上手学习Springboot+Mybatis+MySQL对CRUD的实例,虽然实例不难,但是上面的三个知识我都不懂,就有点为难我了 所以经常遇到一个点卡自己很久的情况,这里列 ...
- SpringBoot+Mybatis整合实例
前言 大家都知道springboot有几大特点:能创建独立的Spring应用程序:能嵌入Tomcat,无需部署WAR文件:简化Maven配置:自动配置Spring等等.这里整合mybatis,创建一个 ...
- Mybatis入门实例解析
写在前面:本文全程根据Mybatis官网进行入门讲解.毫无疑问,官方文档是学习这门技术最权威的资料,与此同时我们也知道官方文档对待入门小白基本上不太友好,没有入门demo.开篇就是小白们不懂的内容.有 ...
- MyBatis简单实例
---直接贴代码 (1)User.Java package me.gacl.domain; /** * @author gacl * users表所对应的实体类 */ public class Use ...
- 2.mybatis入门实例 连接数据库进行查询
1.新建项目,添加mybatis和mysql的jar包 2.在mysql中新建表user[id,name,age] CREATE TABLE `users` ( `id` ) NOT NULL aut ...
- MyBatis入门实例-包括实体类与数据库字段对应&CLOB字段处理
1.我的开发环境是 jdk1.7+ecplise+oracle 11g 用到的jar包:mybatis-3.1.1.jar ojdbc6.jar 2.项目整体结构 3.首先配置conf.xml ...
随机推荐
- HR必备基础能力之人性
https://www.jianshu.com/p/bbb858431c81 人力资源管理-从新手到入门(正文) 第一章 必备基础能力 第三节 人性 人力资源管理者(HR)日常工作中面对的主要对象是人 ...
- 不忘初心,回归本质 .net core
static void Main(string[] args) { ; object j = i;//装箱 就是把值类型转换成引用类型 int k = (int)j;//拆箱 就是把引用类型转换成值类 ...
- linux安全配置检查脚本_v0.5
看到网上有人分享了一些linux系统的基线检查脚本,但有些检查项未必适合自己或者说检查的不够完善, 计划按着自己的需求重新写一份出来,其中脚本的检查范围在不断更新中. 脚本内容: [root@loca ...
- zsh与oh-my-zsh
在开始今天的 MacTalk 之前,先问两个问题吧: 1.相对于其他系统,Mac 的主要优势是什么?2.你们平时用哪种 Shell?…… 第一个童靴可以坐下了,Mac 的最大优势是 GUI 和命令行的 ...
- Android下基于SDL的YUV渲染
实战篇 本文主要参考我之前整理的文章windows下使用SDL进行YUV渲染. 相对于之前写的位图渲染部分(http://www.cnblogs.com/tocy/p/android-sdl-bitm ...
- 如何使cmd窗口正确显示utf-8编码的文字
http://blog.csdn.net/ehcoing/article/details/51865922 ********************************************** ...
- nginx中配置proxy_pass
在nginx中配置proxy_pass时,当在后面的url加上了/,相当于是绝对根路径,则nginx不会把location中匹配的路径部分代理走;如果没有/,则会把匹配的路径部分也给代理走. 下面四种 ...
- hexo静态博客的安装及应用实践记录
1. 必须要安装 nodejs,git 2. 安装hexo node install -g hexo 3. npm源的问题使在安装时有卡住的问题而导致无法安装,则需要更改npm的源 npm confi ...
- 使用WPF Application Framework (WAF)框架
Visual Studio新建WAF项目的模板:https://marketplace.visualstudio.com/items?itemName=jbe2277.WAFProjectTempla ...
- JavaScript 中 类型转换
转自 https://www.cnblogs.com/wuxiaoshang/p/5835627.html // 转换成字符型 var married = false; alert(married.t ...