跟初学者学习IbatisNet第二篇
在上一篇里面我们知道了什么是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第二篇相关推荐
- Egret入门学习日记 --- 第二篇
第二篇(学习篇) 既然选好了Egret,那我就要想想怎么学了. 开始第一步,先加个Q群先,这不,拿到了一本<Egret HTML5游戏开发指南>,阅至三章,得到印象相对较深的好处和坏处: ...
- 【Android Studio学习】第二篇、APP实现画简易的波形图
目录 第一部分.前言 1.效果展示 2.参考博客 3.实现方式 第二部分.详细步骤 1.添加波形函数的依赖 2.添加一个管理类 3.修改activity_main.xml文件的代码 4.修改MainA ...
- bootloader学习笔记---第二篇
目录 一.链接地址与跳转 二.bootloader疑难问题 1.应用程序中使用中断导致程序跑飞或者不能重新下载程序? 2.中断向量表具体是怎么重映射? 3.bootloader更新app过程中意外断电 ...
- HTML学习日记-第二篇
上节课我们粗略的介绍了一下html的基本标签,接下来我们开始进入表格标签. 表格标签:作用:用来给一堆数据添加表格语义 其实表格是一种数据的展现形式,当数据量非常大的时候,表格这种展现形式被认为是最为 ...
- Python学习【第二篇】 : Python入门
Python安装 Hello World 字符编码 变量 用户输入 模块初识 .pyc是个什么? 数据类型 数据运算 表达式if ...else语句 表达式for 循环 break and conti ...
- OVAL学习之第二篇
漏洞库.漏洞库,天天弄这玩意宝宝都快哭了.要知道宝宝是做逆向的. 我用的是eSCAPe-1.2.2.jar来编写oval的,看见.jar了吧,对滴我们得搭建JAVA那套环境T^T.由于没有汉化对于我这 ...
- 超详细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文件测试运算符 ...
- 网络安全应急演练学习笔记第二篇之应急演练规划
文章目录 0x05 应急演练规划 第一部分 制定演练规划 第二部分 设计演练方案 第三部分 应急演练保障 摘抄 0x05 应急演练规划 第一部分 制定演练规划 演练计划由总指挥部策划小组组织各参演单位 ...
- vue.js学习系列-第二篇
一 VUE实例生命周期钩子 1 生命周期函数 定义 生命周期函数就是vue在某一时间点自动执行的函数 2 具体函数 1 new vue() 2 be ...
- kali学习日记第二篇 -- Nessus
一.准备工作 root@kali:~# apt-get update; apt-get upgrade; apt-get dist-upgrade 二.获取安装 1.从http://www.nessu ...
最新文章
- 【云计算的1024种玩法】轻松将其他云的对象储存迁移至阿里云OSS
- 苹果6发布时间_苹果秋季发布会将在北京时间9月16日举办
- CAT arguments dimensions are not consistent.CAT参数的维度不一致。
- glup打包代码不更新
- 走进中国移动(宁夏)数据中心,感受不一样的运营商情怀
- 公共方法之运算符,len,del,max,min,range,enumerate
- pg日期转周_PostgreSQL的时间/日期函数使用
- 2021年SWPUACM暑假集训day3最小生成树算法
- 从G1设计到堆空间调整
- Oracle 触发器详解
- hive循环语句_Hive 如何方便地实现存储过程?
- Linux内核memcpy的不同实现
- 修改图片exif信息
- 百融云创:互联网驶入深水区,金融科技保驾护航 | 会员专栏
- 有没有英语语音测试软件,没有雅思的高分女朋友虐你英语,就善用手机的app录音自测练习...
- Kafka 官方文档1(中文)
- 微信分享,实现自定义标题、描述、图标
- 在Keras的Embedding层中使用预训练的word2vec词向量
- java imageicon大小_Java 自动缩放ImageIcon到标签大小
- Javascript--04 JavaScript的内部对象