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 ...
随机推荐
- linux下配置某程序的sudo不用输密码
$ su密码: # cd /etc/# cp sudoers sudoers_bak# vi sudoers 最下面加入一行:ALL ALL = NOPASSWD:/usr/sbin/openconn ...
- audio音乐播放
1.audio标签 <audio @play="ready" @error="error" ref="audio" :src=&quo ...
- Spark orderBy(desc("col"))部分数据排序失败
起因 对数据进行三个维度的排序,用的是orderBy(desc("col")),结果其中两个维度上结果返回正确,另外一个维度上结果出现了大的排在后面的结果,错误的结果大概如下: w ...
- openfire 发送 接受 注册 广播 好友列表 在线状态
package cn.zsmy.utils.openfire; import java.io.BufferedReader; import java.io.InputStreamReader; imp ...
- FFmpeg Basics学习笔记(1)ffmpeg基础
1 FFmpeg的由来 FFmpeg缩写中,FF指的是Fast Forward,mpeg是 Moving Pictures Experts Group的缩写.官网:ffmpeg.org 编译好的可执行 ...
- LOCAL_EXPORT_C_INCLUDES和LOCALC_INCLUDES 的差别
http://stackoverflow.com/questions/6595208/what-does-this-line-mean-local-export-c-includes LOCAL_EX ...
- java 多线程 23 : Timer
前言 定时/计划功能在Java应用的各个领域都使用得非常多,比方说Web层面,可能一个项目要定时采集话单.定时更新某些缓存.定时清理一批不活跃用户等等.定时计划任务功能在Java中主要使用的就是Tim ...
- 1:(0or1)
public class User { public int ID { get; set; } public string UserName { get; set; } ...
- [转]bootstrap的table插件动态加载表头
原文地址:https://blog.csdn.net/abubu123/article/details/78060321 bootstrap的table属性已经很熟悉了,最近遇到一个问题,犹豫每个列表 ...
- CentOS6.3升级Python到2.7.3版本
http://www.zhangchun.org/the-centos6-3-upgrade-python-to-2-7-3-version/ 查看python的版本 1 python -V 2 ...