在上一篇里面我们知道了什么是IbatisNet,并且知道了如何用IbatisNet进行简单的增删改查的操作,在这一篇文章里面我们主要介绍一下IbatisNet操作存储过程。

我们一般把存储过程分为两种类型:

1,查询类型的存储过程

也就是所谓的select语句

2,修改类型的存储过程

例如,insert,update,delete修改数据库数据的操作。

下面首先我们介绍一下查询类型的存储过程,为了使用我们建一个存储过程(以前很少用过现场百度的…………如果写的不好或者不对欢迎指正)

 1 create procedure pt_SelectByTj
 2          @classes_name varchar(100),
 3          @classes_description varchar(100)
 4 as
 5 if(@classes_name is not  null and @classes_description is not null)
 6 begin
 7 select * from  dbo.calsses where classes_name like '%'+@classes_name+'%' and classes_description like '%'+@classes_description+'%';
 8 end
 9 if(@classes_name is not  null and @classes_description is null)
10 begin
11 select * from  dbo.calsses where classes_name like '%'+@classes_name+'%';
12 end
13 if(@classes_name is  null and @classes_description is not  null)
14 begin
15 select * from  dbo.calsses where classes_description like '%'+@classes_description+'%';
16 end
17 if(@classes_name is  null and @classes_description is  null)
18 begin
19 select * from  dbo.calsses;
20 end

查询的存储过程

然后我们要到xml里面去配置,在statements节点下面加一个procedure表示执行的是存储过程。其中parameterMap="swapParas"(swapParas的来历看下面的配置)

是参数类型 resultMap="SelectAllResult"(SelectAllResult的来历看下面的配置)是返回结果

1   <statements>
2     <procedure id="GetClassesListByTj" parameterMap="swapParas"  resultMap="SelectAllResult">
3       pt_SelectByTj
4     </procedure>
5   </statements>

代码

我们来看一下如何配置存储过程的参数条件(需要注意的是:这里面的顺序一定要和你在存储过程里面的顺序一样)

1   <parameterMaps>
2     <parameterMap id="swapParas" class="Model.Calsses">
3       <parameter property="Name" column="classes_name" />
4       <parameter property="Description" column="classes_description" />
5     </parameterMap>
6   </parameterMaps>

代码

简单介绍这些属性的含义

parameterMap节点表示参数的集合,可以是一个实体,也可以是Hashtable,HashMap等数据结构。

parameter节点就是你的参数节点,property是你Hashtable里面的key值,column是你存储过程里面变量的名字,如果key值跟存储过程里面变量的名字相同的话column

可以为空。

下面介绍一下 resultMap="SelectAllResult"中SelectAllResult的来历

1   <resultMaps>
2     <resultMap id="SelectAllResult" class="classes">
3       <result property="Id" column="calsses_id" />
4       <result property="Name" column="classes_name" />
5       <result property="Description" column="classes_description" />
6     </resultMap>
7   </resultMaps>

代码

在这里每一张表都对应一个实体,但是有时候我们的实体里面的属性跟我们的数据库字段对应不上,所以我们就在这里配置一下方便后面的使用。

看一下我们service类面的方法还是和以前一样调用

1    /// <summary>
2         /// 根据条件查询全部额班级信息
3         /// </summary>
4         /// <param name="ht">参数</param>
5         /// <returns>查询的结果</returns>
6         public IList<Calsses> GetClassesListByTj(Hashtable ht)
7         {
8             return SqlMap.QueryForList<Calsses>("GetClassesListByTj", ht);
9         }

代码

下面是aspx.cs里面的方法

1 protected void btn_select_Click(object sender, EventArgs e)
2         {
3             Hashtable table = new Hashtable();
4             table.Add("Name", txt_name.Text);
5             table.Add("Description", txt_name.Text);
6             gdv_list.DataSource = service.GetClassesListByTj(table);
7             gdv_list.DataBind();
8         }

代码

界面如下:

好了,对于存储过程就先到这儿,这里面只写了一个查询的小例子,关于增删改的例子,就请读者自己去实现了,边学边练习才能学的更深入。

由于我也是初学者,如果文章中有什么不对或者遗漏的地方,欢迎大家指正………………

关于Ibatisnet的简单操作可以参照我的上一篇博客 跟初学者学习IbatisNet第一篇

本来还想在这一篇里面介绍一下Log4net呢,后来一想,还是留在下一篇来单独介绍一下如何用log4net记录日志吧。

源码下载:http://download.csdn.net/detail/woaixiaozhi/5826535

转载于:https://www.cnblogs.com/woaixiaozhi/p/3220489.html

跟初学者学习IbatisNet第二篇相关推荐

  1. Egret入门学习日记 --- 第二篇

    第二篇(学习篇) 既然选好了Egret,那我就要想想怎么学了. 开始第一步,先加个Q群先,这不,拿到了一本<Egret  HTML5游戏开发指南>,阅至三章,得到印象相对较深的好处和坏处: ...

  2. 【Android Studio学习】第二篇、APP实现画简易的波形图

    目录 第一部分.前言 1.效果展示 2.参考博客 3.实现方式 第二部分.详细步骤 1.添加波形函数的依赖 2.添加一个管理类 3.修改activity_main.xml文件的代码 4.修改MainA ...

  3. bootloader学习笔记---第二篇

    目录 一.链接地址与跳转 二.bootloader疑难问题 1.应用程序中使用中断导致程序跑飞或者不能重新下载程序? 2.中断向量表具体是怎么重映射? 3.bootloader更新app过程中意外断电 ...

  4. HTML学习日记-第二篇

    上节课我们粗略的介绍了一下html的基本标签,接下来我们开始进入表格标签. 表格标签:作用:用来给一堆数据添加表格语义 其实表格是一种数据的展现形式,当数据量非常大的时候,表格这种展现形式被认为是最为 ...

  5. Python学习【第二篇】 : Python入门

    Python安装 Hello World 字符编码 变量 用户输入 模块初识 .pyc是个什么? 数据类型 数据运算 表达式if ...else语句 表达式for 循环 break and conti ...

  6. OVAL学习之第二篇

    漏洞库.漏洞库,天天弄这玩意宝宝都快哭了.要知道宝宝是做逆向的. 我用的是eSCAPe-1.2.2.jar来编写oval的,看见.jar了吧,对滴我们得搭建JAVA那套环境T^T.由于没有汉化对于我这 ...

  7. 超详细Shell学习教程第二篇

    目录 1.1vim使用简单介绍 1.2控制语句 1.3运算符 1.3.1算术运算符 1.3.2关系运算符 1.3.3布尔运算符 1.3.4逻辑运算符 1.3.5字符串运算符 1.3.6文件测试运算符 ...

  8. 网络安全应急演练学习笔记第二篇之应急演练规划

    文章目录 0x05 应急演练规划 第一部分 制定演练规划 第二部分 设计演练方案 第三部分 应急演练保障 摘抄 0x05 应急演练规划 第一部分 制定演练规划 演练计划由总指挥部策划小组组织各参演单位 ...

  9. vue.js学习系列-第二篇

    一 VUE实例生命周期钩子      1 生命周期函数          定义 生命周期函数就是vue在某一时间点自动执行的函数 2 具体函数       1 new vue()       2 be ...

  10. kali学习日记第二篇 -- Nessus

    一.准备工作 root@kali:~# apt-get update; apt-get upgrade; apt-get dist-upgrade 二.获取安装 1.从http://www.nessu ...

最新文章

  1. 【云计算的1024种玩法】轻松将其他云的对象储存迁移至阿里云OSS
  2. 苹果6发布时间_苹果秋季发布会将在北京时间9月16日举办
  3. CAT arguments dimensions are not consistent.CAT参数的维度不一致。
  4. glup打包代码不更新
  5. 走进中国移动(宁夏)数据中心,感受不一样的运营商情怀
  6. 公共方法之运算符,len,del,max,min,range,enumerate
  7. pg日期转周_PostgreSQL的时间/日期函数使用
  8. 2021年SWPUACM暑假集训day3最小生成树算法
  9. 从G1设计到堆空间调整
  10. Oracle 触发器详解
  11. hive循环语句_Hive 如何方便地实现存储过程?
  12. Linux内核memcpy的不同实现
  13. 修改图片exif信息
  14. 百融云创:互联网驶入深水区,金融科技保驾护航 | 会员专栏
  15. 有没有英语语音测试软件,没有雅思的高分女朋友虐你英语,就善用手机的app录音自测练习...
  16. Kafka 官方文档1(中文)
  17. 微信分享,实现自定义标题、描述、图标
  18. 在Keras的Embedding层中使用预训练的word2vec词向量
  19. java imageicon大小_Java 自动缩放ImageIcon到标签大小
  20. Javascript--04 JavaScript的内部对象

热门文章

  1. 大数据各组件默认端口
  2. 为项目配置了Bean,结果Spring Boot并没有扫描到
  3. 7.彻底搞懂javascript-闭包
  4. Dos命令批量操作复制出26个虚拟盘空间
  5. 深度学习之神经网络核心原理与算法-caffekeras框架图片分类
  6. ssh整合之四单独搭建struts的运行环境
  7. 用进化的观点学习网络协议
  8. 采用Cloudera-Manager安装CDH时,采用内嵌数据库各数据库用户密码的保存位置
  9. WinForm 窗体中实现单例模式
  10. Windows 8实用窍门系列:16.Windows 8的右键菜单