在前面的章节中,我们已经讲到了基本的 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实例的更多相关文章

  1. spring+mybatis结合实例

    1.通过上两篇文章的学习,大致了解了spring和mybatis的架构和使用原理,下面这篇文章就将给出两者结合的一个小实例,通过该实例进一步探索这两个框架的魅力,工程所需要的所有jar包都在链接:ht ...

  2. mybatis 学习笔记 -详解mybatis 及实例demo

    快速入门1 要点: 首先明白mybatis 是什么 这是一个持久层的框架.之前叫做ibatis.所以,在它的代码中出现ibatis这个词的时候,不要感到惊讶.不是写错了,它确实就是这个样子的. 首先, ...

  3. Mybatis入门实例

    MyBatis 简介 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis ...

  4. Springboot+Mybatis+MySQL实例练习时踩坑记录

    最近刚开始学习后端,直接让上手学习Springboot+Mybatis+MySQL对CRUD的实例,虽然实例不难,但是上面的三个知识我都不懂,就有点为难我了 所以经常遇到一个点卡自己很久的情况,这里列 ...

  5. SpringBoot+Mybatis整合实例

    前言 大家都知道springboot有几大特点:能创建独立的Spring应用程序:能嵌入Tomcat,无需部署WAR文件:简化Maven配置:自动配置Spring等等.这里整合mybatis,创建一个 ...

  6. Mybatis入门实例解析

    写在前面:本文全程根据Mybatis官网进行入门讲解.毫无疑问,官方文档是学习这门技术最权威的资料,与此同时我们也知道官方文档对待入门小白基本上不太友好,没有入门demo.开篇就是小白们不懂的内容.有 ...

  7. MyBatis简单实例

    ---直接贴代码 (1)User.Java package me.gacl.domain; /** * @author gacl * users表所对应的实体类 */ public class Use ...

  8. 2.mybatis入门实例 连接数据库进行查询

    1.新建项目,添加mybatis和mysql的jar包 2.在mysql中新建表user[id,name,age] CREATE TABLE `users` ( `id` ) NOT NULL aut ...

  9. MyBatis入门实例-包括实体类与数据库字段对应&CLOB字段处理

    1.我的开发环境是 jdk1.7+ecplise+oracle 11g 用到的jar包:mybatis-3.1.1.jar ojdbc6.jar 2.项目整体结构     3.首先配置conf.xml ...

随机推荐

  1. [Windows Azure] Windows Azure SQL Database library

    Microsoft Windows Azure SQL Database extends SQL Server capabilities to the cloud. SQL Database offe ...

  2. 每日英语:Proactive Advice for Dealing With Grief: Seek Out New Experiences

    When her husband died of cancer 10 years ago, Becky Aikman says she experienced grief and adapted to ...

  3. 每日英语:A Chinese Father’s Most Important Job

    When it comes to parenting, Chinese fathers say the most important role they play is that of the fam ...

  4. HBase 管理,性能调优

    设置 Hadoop 来扩展磁盘 I/O 现代服务器通常有多个磁盘硬件来提供大存储能力.这些磁盘通常配置成 RAID 阵列,作为它们的出厂设置.这在很多情况下是有益的,但对 Hadoop 却不是. Ha ...

  5. python中 staticmethod与classmethod区别

    staticmethod与classmethod区别 参考 https://stackoverflow.com/questions/136097/what-is-the-difference-betw ...

  6. 【转】解决Lost connection to MySQL server during query错误方法

    初步判断是MySQL可能挂掉了,在系统服务里面查看MySQL的进程并没有停止. 最开始考虑是数据库结构不对,但是我是通过Navicat for MySQL的备份和恢复备份导入数据,应该表结构都在备份文 ...

  7. js设置cookie(原生js)

    cookie 与 session 是网页开发中常用的信息存储方式.Cookie是在客户端开辟的一块可存储用户信息的地方:Session是在服务器内存中开辟的一块存储用户信息的地方. JavaScrip ...

  8. Python与操作系统有关的模块

    Os模块 Python的标准库中的os模块主要涉及普遍的操作系统功能.可以在Linux和Windows下运行,与平台无关.os.sep 可以取代操作系统特定的路径分割符.os.name字符串指示你正在 ...

  9. Delphi实现RGB色环的代码绘制(XE10.2+WIN764)

    相关资料: http://blog.csdn.net/tokimemo/article/details/18702689 http://www.myexception.cn/delphi/215402 ...

  10. (转载)WPF中的动画——(一)基本概念

    http://www.cnblogs.com/TianFang/p/4050845.html WPF的一个特点就是支持动画,我们可以非常容易的实现漂亮大方的界面.首先,我们来复习一下动画的基本概念.计 ...