隐藏

IbatisNet第二篇

发布:2014/9/26 14:47:45作者:管理员 来源:本站 浏览次数:1142

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

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

   1,查询类型的存储过程

   也就是所谓的select语句

   2,修改类型的存储过程

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

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

create procedure pt_SelectByTj

         @classes_name varchar(100),

         @classes_description varchar(100)

as

if(@classes_name is not  null and @classes_description is not null)

begin

select * from  dbo.calsses where classes_name like '%'+@classes_name+'%' and classes_description like '%'+@classes_description+'%';

end

if(@classes_name is not  null and @classes_description is null)

begin

select * from  dbo.calsses where classes_name like '%'+@classes_name+'%';

end

if(@classes_name is  null and @classes_description is not  null)

begin

select * from  dbo.calsses where classes_description like '%'+@classes_description+'%';

end

if(@classes_name is  null and @classes_description is  null)

begin

select * from  dbo.calsses;

end

 

查询的存储过程

 

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

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


<statements>

    <procedure id="GetClassesListByTj" parameterMap="swapParas"  resultMap="SelectAllResult">

        pt_SelectByTj

    </procedure>

</statements>

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

<parameterMaps>

    <parameterMap id="swapParas" class="Model.Calsses">

      <parameter property="Name" column="classes_name" />

      <parameter property="Description" column="classes_description" />

    </parameterMap>

  </parameterMaps>

 

代码

简单介绍这些属性的含义

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

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

可以为空。

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

<resultMaps>

    <resultMap id="SelectAllResult" class="classes">

      <result property="Id" column="calsses_id" />

      <result property="Name" column="classes_name" />

      <result property="Description" column="classes_description" />

    </resultMap>

  </resultMaps>

 

代码

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

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

/// <summary>

        /// 根据条件查询全部额班级信息

        /// </summary>

        /// <param name="ht">参数</param>

        /// <returns>查询的结果</returns>

        public IList<Calsses> GetClassesListByTj(Hashtable ht)

        {

            return SqlMap.QueryForList<Calsses>("GetClassesListByTj", ht);

        }

 

代码

下面是aspx.cs里面的方法

protected void btn_select_Click(object sender, EventArgs e)

        {

            Hashtable table = new Hashtable();

            table.Add("Name", txt_name.Text);

            table.Add("Description", txt_name.Text);

            gdv_list.DataSource = service.GetClassesListByTj(table);

            gdv_list.DataBind();

        }

 

代码

界面如下:

 

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

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

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

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

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