跟初学者学习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

posted @ 2013-07-27 23:54  吴小贰  阅读(1688)  评论(1编辑  收藏  举报