其实调用方式比较简单,主要也就是两种类型的存储过程:
1、更新类型的存储过程
2、查询类型的存储过程
下面就来看看具体的调用方式:
1、更新类型的存储过程
sp_InsertAccount:

CREATE PROCEDURE [dbo].[sp_InsertAccount]
    -- Add the parameters for the stored procedure here
   @Account_ID int,
   @Account_FirstName varchar(32),
   @Account_LastName varchar(32)AS
BEGIN
insert into accounts (account_id, account_firstname, account_lastname) 
    values (@Account_ID,@Account_FirstName,@Account_LastName )
END

Map配置文件:

        <procedure id="InsertAccountViaStoreProcedure" parameterMap="insert-params_new">
            sp_InsertAccount
        </procedure>

    <parameterMap id="insert-params_new" class="Account">
      <parameter property="Id" />
      <parameter property="FirstName" />
      <parameter property="LastName" />
    </parameterMap>

这里要注意的就是ParameterMap中的参数个数和顺序要和sp_InsertAccount存储过程中的一致

Ado中的调用代码:

        public void InsertAccountViaStoreProcedure(Account account)
        {
            try
            {
                sqlMap.Insert("InsertAccountViaStoreProcedure", account);
            }
            catch (DataAccessException ex)
            {
                throw new DataAccessException("Error executing InsertAccountViaStoreProcedure. Cause :" + ex.Message, ex);
            }
        }

这里使用的是sqlMap.Insert的方法,为了看起来直观一点,其实使用sqlMap.QueryForObject方法的话效果也是一样的:)

2、查询类型的存储过程
GetAccountByName:

CREATE PROCEDURE [dbo].[GetAccountByName]
    @name varchar(32)
AS
BEGIN
select * from accounts where Account_FirstName like '%' + @name + '%'
END

Map配置文件:

    <procedure id="GetAccountByNameViaStoreProcedure" resultMap="account-result" parameterMap="selectpro-params">
      GetAccountByName
    </procedure>

    <parameterMap id="selectpro-params" class="string">
      <parameter property="name"/>
    </parameterMap>

这里parameterMap也是和上面的要求一样,至于property的名字在这里没有实际作用,可以任意取名的

Ado中的调用代码:

        public ArrayList GetAccountByNameViaStoreProcedure(string strName)
        {
            try
            {
                ArrayList list = (ArrayList)sqlMap.QueryForList("GetAccountByNameViaStoreProcedure", strName);
                return list;
            }
            catch (DataAccessException ex)
            {
                throw new DataAccessException("Error executing SqlAccountViaSqlMapDao.GetAccountById. Cause :" + ex.Message, ex);
            }
        }
 
http://www.cnblogs.com/firstyi/archive/2008/01/25/1053208.html

IBatis.Net学习笔记十三:在IBatis.Net中调用存储过程的更多相关文章

  1. Javascript学习笔记:3种递归函数中调用自身的写法

    ①一般的通过名字调用自身 function sum(num){ if(num<=1){ return 1; }else{ return num+sum(num-1); } } console.l ...

  2. Mybatis学习笔记——输入参数parameterType、Mybatis调用存储过程

    输入参数:parameterType(两种取值符号) 1.类型为简单类型 区别:     (1) #{可以为任意值}         ${vaue}--->标识符只能是value     (2) ...

  3. IBatis.Net学习笔记六--再谈查询

    在IBatis.Net学习笔记五--常用的查询方式 中我提到了一些IBatis.Net中的查询,特别是配置文件的写法. 后来通过大家的讨论,特别是Anders Cui 的提醒,又发现了其他的多表查询的 ...

  4. python3.4学习笔记(十三) 网络爬虫实例代码,使用pyspider抓取多牛投资吧里面的文章信息,抓取政府网新闻内容

    python3.4学习笔记(十三) 网络爬虫实例代码,使用pyspider抓取多牛投资吧里面的文章信息PySpider:一个国人编写的强大的网络爬虫系统并带有强大的WebUI,采用Python语言编写 ...

  5. java之jvm学习笔记十三(jvm基本结构)

    java之jvm学习笔记十三(jvm基本结构) 这一节,主要来学习jvm的基本结构,也就是概述.说是概述,内容很多,而且概念量也很大,不过关于概念方面,你不用担心,我完全有信心,让概念在你的脑子里变成 ...

  6. Go语言学习笔记十三: Map集合

    Go语言学习笔记十三: Map集合 Map在每种语言中基本都有,Java中是属于集合类Map,其包括HashMap, TreeMap等.而Python语言直接就属于一种类型,写法上比Java还简单. ...

  7. Typescript 学习笔记四:回忆ES5 中的类

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  8. cocos2d-html5学习笔记(六)--alpha2中cc.Sequence.create中的bug

    cocos2d-html5学习笔记(六)--alpha2中cc.Sequence.create中的bug http://blog.csdn.net/allenice1/article/details/ ...

  9. 【opencv学习笔记七】访问图像中的像素与图像亮度对比度调整

    今天我们来看一下如何访问图像的像素,以及如何改变图像的亮度与对比度. 在之前我们先来看一下图像矩阵数据的排列方式.我们以一个简单的矩阵来说明: 对单通道图像排列如下: 对于双通道图像排列如下: 那么对 ...

随机推荐

  1. PL/SQL基础2(笔记)

    1 第一个PL/SQL的程序 DECLARE BEGIN DBMS_OUTPUT.PUT_LINE('Hello World!'); END; / --2一个简单的PL/SQL程序 DECLARE v ...

  2. 关于C语言中单双引号的问题

    代码 #include<stdio.h> int main() { if ( "{" =='{' ) printf("True\n"); else ...

  3. C++中的多态与虚函数的内部实现

    1.什么是多态         多态性可以简单概括为“一个接口,多种行为”.         也就是说,向不同的对象发送同一个消息, 不同的对象在接收时会产生不同的行为(即方法).也就是说,每个对象可 ...

  4. InfluxDB Cli中查询结果中time格式显示设置

    InfluxDB Cli中,time默认显示为19位时间戳格式,平时查询起来特不方便,那么,如何设置成为我们人类能看懂的时间格式呢? 方法有二: 1.$ influx -precision rfc33 ...

  5. Markdown使用Demo

    论脚臭的重要性 军总远离球场,下半年的海波桥将何去何从? 1.赵总对团岛的贡献是有目共睹的 2.呕心沥血刚 超链接 这是一张图片链接 这是引用自Yellow Shit的一句话:领导nice! 今天天气 ...

  6. 在VS2010中使用Outlook工具栏

    参考资料:微软MSDN.VS2010示例代码 一开始上段子总是能活跃气氛,等哪天我再打开自己的这篇博客,总是能够让自己傻傻的乐一下. 我一女同学,毕业去一大公司应聘,竞争很激烈,最后剩下她和一位女士. ...

  7. 读书笔记——Windows核心编程(13)Windows内存体系结构

    对于32位进程(0x0000 0000~0xFFFF FFFF),有4GB的地址空间. 每个进程都有自己专有的地址空间,当进程的各个线程运行时,它们只能访问属于该进程的内存. 这4GB其实是虚拟地址空 ...

  8. Javascript中replace()的一些用法总结

    关于定义 replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串. 关于语法 stringObject.replace(regexp/substr,repla ...

  9. Linux date命令的用法

    在linux shell编程中,经常用到日期的加减运算以前都是自己通过expr函数计算,很麻烦.其实date命令本身提供了日期的加减运算非常方便. 例如:得到昨天的时间date  --date=&qu ...

  10. SSAS-many 2 many one simple sample

    基本业务:一个事件发生后,影响到多个国家,这个事件也会被定一个事件类型(这里简化为type1,2,3),处理这个事件花费多长时间. 我们的事实表就记录这个事情,相对应的我们设计两个维表,一个是国家,一 ...