关于在IBatis中返回DataSet
{
DataSet ds = new DataSet();
ISqlMapper mapper = GetMapper();
IMappedStatement statement = mapper.GetMappedStatement(statementName);
if (!mapper.IsSessionStarted)
{
mapper.OpenConnection();
}
RequestScope scope = statement.Statement.Sql.GetRequestScope(statement, paramObject, mapper.LocalSession);
statement.PreparedCommand.Create(scope, mapper.LocalSession, statement.Statement, paramObject);
mapper.LocalSession.CreateDataAdapter(scope.IDbCommand).Fill(ds);
return ds;
}
在这个过程中,我们还可以顺便得出获得SQL语句的方法:
{
ISqlMapper mapper = GetMapper();
IMappedStatement statement = mapper.GetMappedStatement(statementName);
if (!mapper.IsSessionStarted)
{
mapper.OpenConnection();
}
RequestScope scope = statement.Statement.Sql.GetRequestScope(statement, paramObject, mapper.LocalSession);
return scope.PreparedStatement.PreparedSql;
}
下面是我对文中内容的理解:
并不是所有地方都要OO,在IBatis的Java和.NET实现中都支持Dictionary类型的对象.DataTable因为有了DataView的支持而较IDictionary具有一些优势.如果我们需要对数据进行额外的排序或者过滤操作,那么DataTable会更方便一些.因此像这种返回DataSet的方法会使得IBatis更加易用.
但同时感觉,这种方法将IBatis打开了一个缺口,似乎背离了IBatis的设计初衷——创建一个优秀的“Persistence Ignorance” domain model。比如现在,我们进行一次查询,获得“Plain Old CLR Objects”,看起来输入是与数据持久化相关的,而输出则完全集中在了领域模型上。
因此,返回DataSet的方法可能会导致不好的设计,从长远来看,也模糊了IBatis的初衷和意图。
转载于:https://www.cnblogs.com/gooddasenlin/archive/2011/04/08/2009529.html
关于在IBatis中返回DataSet相关推荐
- Oracle存储过程实现返回多个结果集 在构造函数方法中使用 dataset
原文 Oracle存储过程实现返回多个结果集 在构造函数方法中使用 dataset DataSet相当你用的数据库: DataTable相当于你的表.一个 DataSet 可以包含多个 DataTab ...
- ibatis insert mysql_让iBatis中的insert返回主键
让iBatis中的insert返回主键 [ibatis insert 返回 自增主键] parameterClass="RemarkInfo"> insert into SG ...
- 在pytorch中自定义dataset读取数据2021-1-8学习笔记
在pytorch中自定义dataset读取数据 utils import os import json import pickle import randomimport matplotlib.pyp ...
- 存储过程中返回结果集
存储过程中返回结果 从存储过程中返回结果有三种方式: 1. 返回结果集 这是客户端应用程序返回结果的最通用的方法.结果集是通过使用select语句选择数据产生的.结果集可以从永久表.临时表或局部变量中 ...
- python中id地址什么意思_id()在python中返回的对象地址是什么?
在函数返回时有一个身份的识别,就像我们寄包裹的时候都有一个单号,便于大家随时跟踪它的进度.我们今天要讲的内置函数id()同样可以看作是用来进行身份识别的.那么我们进一步思考,id()最后返回的地址究竟 ...
- Dictionary作为数据源绑定,调用c++库中返回为BYTE*的函数,listView项排序
最近在做一个电子档案管理的项目.现在还处于初期,只是做一个简单demo拿去跟客户演示.至于最后谈不谈得下来,到底做不做,反正我是不看好,但没因为这样就马马虎虎.草草了事.这个项目算是b/s加c/s混合 ...
- 深入分析ADO.NET中的DataSet对象
ADO.NET是.net Framework SDK中用以操作数据库的类库的总称.而DataSet类则是ADO.NET中最核心的成员之一,也是各种开发基于.Net平台程序语言开发数据库应用程序最常接触 ...
- Python Numpy中返回下标操作函数-节约时间的利器
如果觉得Python慢,那么首先应该想到是不是没有用对. Numpy是Python中自带的一个数值计算库,包含了大量数值计算的常用方法.其底层大量使用C/C++(超过50%的代码量),矩阵计算调用LA ...
- 函数中返回char *类型
记录一次比较容易引起混淆的地方. #include <stdio.h> char *str(void) {return "nihao\n"; }int main() { ...
最新文章
- Xcache安装与使用
- 了解大脑的“小情绪”,轻松成为“效率达人”
- 路飞学成-Python爬虫实战密训-第3章
- python心跳包原理_Python 用心跳(UDP包)探测不活动主机
- 【学习笔记:计算几何基础3】 Convex Hull
- 解决Rocketdock在win7上重启后不能保存设置和图标的问题
- Win10PE网络版.iso UEFI、BIOS双启动
- 云队友丨张朝阳不再狂妄,搜狐的艰难复苏路
- Windows7电脑自动断网的解决方法
- android banner 不轮播,使用Android Banner来设置一个轮播图
- ssd的smt_SMT 工厂基础参数要求
- 复制一颗二叉树(java语言)
- 分享830个蜘蛛IP段(分析1G日志得)
- ubuntu 更新系统源
- 海地PVC/COC认证
- 初学者——Java之实现简易俄罗斯方块
- .net中,日志组件 Nlog,SerialLog, Log4Net的用法
- Win10系统下安装和配置MathType7
- qt android 中文乱码,Qt与MSVC中文乱码问题的解决方案
- 《PR基础教程入门篇-学习笔记》-012
热门文章
- xml解析总结-常用需掌握
- 经典SQL[私家珍藏]
- 【并查集】Union Find
- Linux操作Oracle(14)——Oracle数据库 使用VMware虚拟网卡 配置 TnsListener 解决 无法启动的问题
- 阿里云_数加平台类HQL的那些坑
- 阿里腾讯都在做的可视化大屏,我用这工具里的100个模板实现了
- mysql的请求分发,基于 gorilla/mux 实现路由匹配和请求分发:服务单页面应用
- vite.js项目创建流程图
- 使用单/多线程执行程序展示
- centos系统 查看当前python执行的进程