IBatis.Net学习笔记十三:在IBatis.Net中调用存储过程

时间:2023-01-13 17:01:01

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

IBatis.Net学习笔记十三:在IBatis.Net中调用存储过程CREATE PROCEDURE [dbo].[sp_InsertAccount]
IBatis.Net学习笔记十三:在IBatis.Net中调用存储过程    -- Add the parameters for the stored procedure here
IBatis.Net学习笔记十三:在IBatis.Net中调用存储过程   @Account_ID int,
IBatis.Net学习笔记十三:在IBatis.Net中调用存储过程   @Account_FirstName varchar(32),
IBatis.Net学习笔记十三:在IBatis.Net中调用存储过程   @Account_LastName varchar(32)AS
IBatis.Net学习笔记十三:在IBatis.Net中调用存储过程BEGIN
IBatis.Net学习笔记十三:在IBatis.Net中调用存储过程insert into accounts (account_id, account_firstname, account_lastname) 
IBatis.Net学习笔记十三:在IBatis.Net中调用存储过程    values (@Account_ID,@Account_FirstName,@Account_LastName )
IBatis.Net学习笔记十三:在IBatis.Net中调用存储过程END

Map配置文件:

IBatis.Net学习笔记十三:在IBatis.Net中调用存储过程        <procedure id="InsertAccountViaStoreProcedure" parameterMap="insert-params_new">
IBatis.Net学习笔记十三:在IBatis.Net中调用存储过程            sp_InsertAccount
IBatis.Net学习笔记十三:在IBatis.Net中调用存储过程        </procedure>
IBatis.Net学习笔记十三:在IBatis.Net中调用存储过程
IBatis.Net学习笔记十三:在IBatis.Net中调用存储过程    <parameterMap id="insert-params_new" class="Account">
IBatis.Net学习笔记十三:在IBatis.Net中调用存储过程      <parameter property="Id" />
IBatis.Net学习笔记十三:在IBatis.Net中调用存储过程      <parameter property="FirstName" />
IBatis.Net学习笔记十三:在IBatis.Net中调用存储过程      <parameter property="LastName" />
IBatis.Net学习笔记十三:在IBatis.Net中调用存储过程    </parameterMap>
IBatis.Net学习笔记十三:在IBatis.Net中调用存储过程

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

Ado中的调用代码:

IBatis.Net学习笔记十三:在IBatis.Net中调用存储过程        public void InsertAccountViaStoreProcedure(Account account)
IBatis.Net学习笔记十三:在IBatis.Net中调用存储过程        {
IBatis.Net学习笔记十三:在IBatis.Net中调用存储过程            try
IBatis.Net学习笔记十三:在IBatis.Net中调用存储过程            {
IBatis.Net学习笔记十三:在IBatis.Net中调用存储过程                sqlMap.Insert("InsertAccountViaStoreProcedure", account);
IBatis.Net学习笔记十三:在IBatis.Net中调用存储过程            }
IBatis.Net学习笔记十三:在IBatis.Net中调用存储过程            catch (DataAccessException ex)
IBatis.Net学习笔记十三:在IBatis.Net中调用存储过程            {
IBatis.Net学习笔记十三:在IBatis.Net中调用存储过程                throw new DataAccessException("Error executing InsertAccountViaStoreProcedure. Cause :" + ex.Message, ex);
IBatis.Net学习笔记十三:在IBatis.Net中调用存储过程            }
IBatis.Net学习笔记十三:在IBatis.Net中调用存储过程        }

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

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

IBatis.Net学习笔记十三:在IBatis.Net中调用存储过程CREATE PROCEDURE [dbo].[GetAccountByName]
IBatis.Net学习笔记十三:在IBatis.Net中调用存储过程    @name varchar(32)
IBatis.Net学习笔记十三:在IBatis.Net中调用存储过程AS
IBatis.Net学习笔记十三:在IBatis.Net中调用存储过程BEGIN
IBatis.Net学习笔记十三:在IBatis.Net中调用存储过程select * from accounts where Account_FirstName like '%' + @name + '%'
IBatis.Net学习笔记十三:在IBatis.Net中调用存储过程END

Map配置文件:

IBatis.Net学习笔记十三:在IBatis.Net中调用存储过程    <procedure id="GetAccountByNameViaStoreProcedure" resultMap="account-result" parameterMap="selectpro-params">
IBatis.Net学习笔记十三:在IBatis.Net中调用存储过程      GetAccountByName
IBatis.Net学习笔记十三:在IBatis.Net中调用存储过程    </procedure>
IBatis.Net学习笔记十三:在IBatis.Net中调用存储过程
IBatis.Net学习笔记十三:在IBatis.Net中调用存储过程    <parameterMap id="selectpro-params" class="string">
IBatis.Net学习笔记十三:在IBatis.Net中调用存储过程      <parameter property="name"/>
IBatis.Net学习笔记十三:在IBatis.Net中调用存储过程    </parameterMap>

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

Ado中的调用代码:

IBatis.Net学习笔记十三:在IBatis.Net中调用存储过程        public ArrayList GetAccountByNameViaStoreProcedure(string strName)
IBatis.Net学习笔记十三:在IBatis.Net中调用存储过程        {
IBatis.Net学习笔记十三:在IBatis.Net中调用存储过程            try
IBatis.Net学习笔记十三:在IBatis.Net中调用存储过程            {
IBatis.Net学习笔记十三:在IBatis.Net中调用存储过程                ArrayList list = (ArrayList)sqlMap.QueryForList("GetAccountByNameViaStoreProcedure", strName);
IBatis.Net学习笔记十三:在IBatis.Net中调用存储过程                return list;
IBatis.Net学习笔记十三:在IBatis.Net中调用存储过程            }
IBatis.Net学习笔记十三:在IBatis.Net中调用存储过程            catch (DataAccessException ex)
IBatis.Net学习笔记十三:在IBatis.Net中调用存储过程            {
IBatis.Net学习笔记十三:在IBatis.Net中调用存储过程                throw new DataAccessException("Error executing SqlAccountViaSqlMapDao.GetAccountById. Cause :" + ex.Message, ex);
IBatis.Net学习笔记十三:在IBatis.Net中调用存储过程            }
IBatis.Net学习笔记十三:在IBatis.Net中调用存储过程        }
 
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&period;Net学习笔记六--再谈查询

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

  4. python3&period;4学习笔记&lpar;十三&rpar; 网络爬虫实例代码,使用pyspider抓取多牛投资吧里面的文章信息,抓取*网新闻内容

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

  5. java之jvm学习笔记十三&lpar;jvm基本结构&rpar;

    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&period;Sequence&period;create中的bug

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

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

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

随机推荐

  1. DirectX Graphics Infrastructure&lpar;DXGI&rpar;&colon;最佳范例 学习笔记

    今天要学习的这篇文章写的算是比较早的了,大概在DX11时代就写好了,当时龙书11版看得很潦草,并没有注意这篇文章,现在看12,觉得是跳不过去的一篇文章,地址如下: https://msdn.micro ...

  2. JAVA OOP 基础知识提纲

    OOP: 面向对象: 认识事物的一个过程,是整体(特征/行为) 认识事物的方式.人类认识事物的自然思维习惯. 对象及类 对象是实实在在具体存在的东西,主要是从两个角度(行为,特征)去观察 类:是一组具 ...

  3. DeepFace--Facebook的人脸识别(转)

    DeepFace基本框架 人脸识别的基本流程是: detect -> aligh -> represent -> classify 人脸对齐流程 分为如下几步: a. 人脸检测,使用 ...

  4. JNI Java调用C代码 示例

    Activity public class MainActivity extends ListActivity {     static {         System.loadLibrary(&q ...

  5. 通过netty实现服务端与客户端的长连接通讯,及心跳检测。

    基本思路:netty服务端通过一个Map保存所有连接上来的客户端SocketChannel,客户端的Id作为Map的key.每次服务器端如果要向某个客户端发送消息,只需根据ClientId取出对应的S ...

  6. PHP&lpar;一&rpar;OOP基础

    [面向过程&面向对象] 1.面向过程:专注于解决一件事情的过程.最大的特点,是有一个个函数来实现功能需求 2.面向对象:专注于有哪一个对象来实现这个功能,最大的特点,时产生一个个具有属性和方法 ...

  7. re模块的方法总结

    re模块的方法总结 一,查找 1:match 匹配string 开头,成功返回Match object, 失败返回None,只匹配一个. 示例: s="abc221kelvin4774&qu ...

  8. Go基础系列:nil channel用法示例

    Go channel系列: channel入门 为select设置超时时间 nil channel用法示例 双层channel用法示例 指定goroutine的执行顺序 当未为channel分配内存时 ...

  9. virtuanenv&plus;flask

    1.virtualenv&flask 专门为特定项目创建一个目录和一个虚拟的Python 运行环境 # 1.安装 virtualenv$ pip3 install virtualenv #.创 ...

  10. Hadoop HBase概念学习系列之HBase里的宽表设计概念(表设计)(二十七)

    在下面这篇博文里,我给各位博客们,分享了创建HBase表,但这远不止打好基础. HBase编程 API入门系列之create(管理端而言)(8) 在关系型数据库里,表的高表和宽表是不存在的.在如HBa ...