在上一篇里面我们知道了什么是IbatisNet,并且知道了如何用IbatisNet进行简单的增删改查的操作,在这一篇文章里面我们主要介绍一下IbatisNet操作存储过程。
我们一般把存储过程分为两种类型:
1,查询类型的存储过程
也就是所谓的select语句
2,修改类型的存储过程
例如,insert,update,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
Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有