`
maplye
  • 浏览: 114677 次
  • 来自: ...
社区版块
存档分类
最新评论

IBatis.Net中为什么Output的paramMap的class设置为int就获取不到值

阅读更多

上篇文章解答了使用IBatis.Net获取存储过程的返回值,其中我写了一个注意必须要将paramMap的class设置为hashtable,只说了注意,没有说明具体原因,所以心里老是有个疙瘩!
于是,再看了一下DataMapper的源代码,分析如下:
当你调用

mapper.Insert("GetAccountViaSP2", testid);

就会调用MappedStatement的ExecuteInsert方法

public virtual object ExecuteInsert(IDalSession session, object parameterObject )
其中parameterObject就是你传入的参数
接着调用MappedStatement的RetrieveOutputParameters方法设置返回的参数
RetrieveOutputParameters(request, session, command, parameterObject);
RetrieveOutputParameters定义如下
private void RetrieveOutputParameters(RequestScope request, IDalSession session, IDbCommand command, object result)
在这个方法中result就是传入的testid.在这个方法里面通过
request.ParameterMap.SetOutputParameter(ref result, mapping, dataBaseValue);
将返回参数的值赋给了result。整个的数据流的过程是:
testid <--> parameterObject <--> result
但是其中就会设计到值类型和引用类型的关系了。如果是值类型,那么RetrieveOutputParameters的parameterObject就会得到不到result的值。所以就导致了我们上面的问题。

不知道这样的解释,是否清楚?!

分享到:
评论

相关推荐

    IBatis.net 配置各种数据库

    IBatis.net,作为一个轻量级的持久层框架,为开发者提供了灵活的数据映射功能,使得数据库操作变得更为简单。本文将详细介绍如何在IBatis.net中配置和使用各种数据库。 首先,理解IBatis.net的核心概念。IBatis 是...

    spring.net_ibatis.net_mysq

    在IT行业中,Spring.NET、iBatis.NET和MySQL是三个非常重要的开源技术组件,它们各自在不同的领域发挥着关键作用。Spring.NET是一个.NET框架,它提供了依赖注入(DI)和面向方面编程(AOP)等功能,帮助开发者构建...

    c# net ibatis.net 模板

    标题中的"C# .NET iBatis.NET 模板"指的是使用C#编程语言在.NET框架下集成iBatis.NET框架的模板项目。iBatis.NET是一个数据映射框架,它将SQL语句与业务逻辑代码分离,使得数据库访问更加简单灵活。这个模板可能是...

    Ibatis.net+ oracle 简单事例

    添加对Oracle 的引用,如Oracle.DataAccess.Client,然后将Ibatis.net 的相关配置文件和Mapper XML文件加入到项目中。使用VS2008的调试工具,可以快速测试SQL语句和业务逻辑。 【示例应用】 "IbatisTet" 可能是一个...

    ibatis.net winform搭建带数据库

    标题 "ibatis.net winform搭建带数据库" 描述了一个使用iBATIS.NET框架在Windows Forms(WinForm)应用程序中构建数据库交互的过程。iBATIS.NET是.NET平台上的一个持久层框架,它允许开发者将SQL语句与应用程序代码...

    IBatis.Net for .net framework4.0

    - 中小型项目:在不需要ORM框架完整功能,但又希望避免大量SQL硬编码的项目中,IBatis.Net是一个理想的选择。 - 数据库特定操作:对于需要充分利用特定数据库特性的场景,例如Oracle的PL/SQL或SQL Server的存储过程...

    iBatis.Net 模板文件 for codesmith4.1

    iBatis.Net是一款轻量级的ORM(对象关系映射)框架,专为.NET环境设计,用于简化数据库操作。在给定的“iBatis.Net 模板文件 for codesmith4.1”中,我们可以看到一系列与iBatis.Net集成的Codesmith模板,这些模板是...

    Ibatis.net学习例子以及使用教程书

    2. **参数映射**:通过和元素,Ibatis.net可以将.NET对象的属性值映射到SQL语句的参数,简化了参数传递的过程。 3. **结果映射**:使用定义结果集映射,可以将数据库查询结果自动转换为.NET对象,支持一对一、一对...

    ibatis.net Demo

    在"ibatis.net Demo"这个实例中,我们将深入探讨如何利用`ibatis.net`进行数据库交互,并通过`dao.config`方式进行配置。 1. **什么是DAO模式** DAO(Data Access Object)模式是一种设计模式,用于封装对数据库的...

    ibatis.net

    4. Transaction Management:Ibatis.Net提供了事务管理功能,可以在.NET的TransactionScope中进行控制,或者手动设置Transaction级别。 5. Parameter Mapping:通过.NET对象的属性与SQL语句中的参数进行映射,简化...

    Spring.net + iBatis.net + asp.net MVC 整合文档

    关于Spring.net + iBatis.net + asp.net MVC 整合的文档,值!

    asp.net MVC和IBatis.net整合demo程序

    1. **设置项目结构**:创建MVC项目,并为Ibatis.net设置必要的文件结构,如SqlMapConfig.xml配置文件,用于存放数据库连接信息和SQL映射。 2. **安装Ibatis.net**:通过NuGet包管理器或手动下载并添加Ibatis.net库...

    Ibatis.net学习和实例~

    1. **安装与设置**:首先,你需要下载并添加Ibatis.net库到你的项目中,然后配置相应的配置文件,包括数据库连接字符串以及SQL映射文件的位置。 2. **SQL映射文件**:这是Ibatis.net的核心部分,它定义了如何将数据...

    ibatis.Net

    Ibatis.Net是一个流行的开源持久层框架,主要用于简化.NET应用程序中的数据访问层(DAL)开发。它的核心设计理念是将SQL语句与.NET代码分离,通过XML配置文件或动态API来定义数据库交互逻辑,使得开发者能够更加灵活...

    IBatis.NET开发文档

    iBATIS.NET是一款开源的持久层框架,它在.NET平台上为开发者提供了强大的数据访问和SQL映射功能。这个开发文档集合包含了"iBATIS SQL Maps 开发指南"、"iBATIS SQL Maps入门教程"以及"ibatis 开发指南"等资源,旨在...

    asp.net MVC3 IBATIS.NET 实例

    3. **配置IBATIS.NET**: 创建IBATIS.NET的配置文件(如`ibatis.config`),设置数据库连接字符串,并定义SQL映射文件。映射文件中包含具体的SQL查询,这些查询将用于从数据库中检索数据。 4. **编写数据库访问层...

    Ibatis.net 分页

    Ibatis.NET是一款轻量级的ORM(对象关系映射)框架,它允许开发者将SQL查询直接集成到.NET应用程序中,从而避免了传统的ADO.NET代码。在处理大量数据时,分页查询是必不可少的功能,可以有效地减少数据库负载并提高...

Global site tag (gtag.js) - Google Analytics