Ibatis.Net 执行存储过程学习(八)
首先在数据库创建存储过程:
create proc [dbo].[usp_GetPersonById]
@Id int
as
begin
select Id,Name from Person where Id=@Id
end
XML映射文件中定义参数集合:
<parameterMaps>
<!--注意:parameterMap中的参数个数和顺序要和存储过程中的一致-->
<parameterMap id="GetPersonByIdProc">
<parameter property="Id" column="Id"/>
</parameterMap>
</parameterMaps>
然后定义操作:
<!--执行存储过程-->
<procedure id="usp_GetPersonById" parameterMap="GetPersonByIdProc" resultClass="PersonViewModel">
usp_GetPersonById
</procedure>
DAO层:
public PersonViewModel GetPersonByIdProc(Hashtable ht)
{
PersonViewModel p = mapper.QueryForObject<PersonViewModel>("usp_GetPersonById", ht);
return p;
}
Main调用:
static void Main(string[] args)
{
PersonDAO dao = new PersonDAO();
Hashtable ht = new Hashtable();
ht.Add("Id", );
PersonViewModel p = dao.GetPersonByIdProc(ht);
if (p != null)
Console.WriteLine(p.Id + p.Name); Console.ReadKey();
}
注意:Hashtable中的键值名称和参数集合中的property相对应,并且区分大小写。
执行带output输出参数的存储过程
修改下存储过程:
ALTER proc [dbo].[usp_GetPersonById]
@Id int,
@totalCount int output
as
begin
select Id,Name from Person where Id=@Id
set @totalCount=(select count(*) from Person)
end
XML映射文件中定义参数集合:
<parameterMaps>
<!--注意:parameterMap中的参数个数和顺序要和存储过程中的一致-->
<parameterMap id="GetPersonByIdProc">
<parameter property="Id" column="Id"/>
<parameter property="totalCount" column="totalCount" direction="Output"/>
</parameterMap>
</parameterMaps>
定义操作和DAO层不变:
<!--执行存储过程-->
<procedure id="usp_GetPersonById" parameterMap="GetPersonByIdProc" resultClass="PersonViewModel">
usp_GetPersonById
</procedure>
Main调用:
static void Main(string[] args)
{
int totalCount = ;
PersonDAO dao = new PersonDAO();
Hashtable ht = new Hashtable();
ht.Add("Id", );
ht.Add("totalCount", totalCount);
PersonViewModel p = dao.GetPersonByIdProc(ht);
if (p != null)
Console.WriteLine(p.Id + p.Name+" 共"+ ht["totalCount"] + "条数据"); Console.ReadKey();
}
参考:http://www.cnblogs.com/caoyc/category/873268.html
Ibatis.Net 执行存储过程学习(八)的更多相关文章
- MyCat 学习笔记 第十三篇.数据分片 之 通过HINT执行存储过程
1 环境说明 VM 模拟3台MYSQL 5.6 服务器 VM1 192.168.31.187:3307 VM2 192.168.31.212:3307 VM3 192.168.31.150: 330 ...
- Java中执行存储过程和函数(web基础学习笔记十四)
一.概述 如果想要执行存储过程,我们应该使用 CallableStatement 接口. CallableStatement 接口继承自PreparedStatement 接口.所以CallableS ...
- Mysql学习---使用Python执行存储过程
使用Python执行存储过程 使用Python执行存储过程[2部分]: 1.执行存储过程,获取存储过程的结果集 2.将返回值设置给了 @_存储过程名_序号 = #!/usr/bin/env pyt ...
- sqlserver学习2---java执行存储过程
一.存储过程 1.新增操作存储过程 --------------1.新建 增加学生的存储过程---------------------------- set IDENTITY_INSERT stude ...
- C#学习-执行存储过程
使用存储的优点 1.执行更快.直接写sql脚本会有个解析编译的过程. 2.修改方便.当业务改变时,只需要改存储过程,不需要修改C#代码 3.传递Sql脚本数据相对更小 缺点: 1.使用存储过程,数据库 ...
- Python Tutorial 学习(八)--Errors and Exceptions
Python Tutorial 学习(八)--Errors and Exceptions恢复 Errors and Exceptions 错误与异常 此前,我们还没有开始着眼于错误信息.不过如果你是一 ...
- mySql-数据库之存储过程学习总结
之前在工作中总是听别人提到存储过程,觉得是个很高深的东西,利用工作之余,看了下相关的知识,现将学习知识总结如下,希望可以为刚学习的人提供些许帮助. 开发环境:Navicat For Mysql. My ...
- SQL server 存储过程学习
一.定义变量--简单赋值 declare @a intset @a=5 print @a --使用select语句赋值 declare @user1 nvarchar(50) select @user ...
- Ibatis.Net 各种配置说明学习(二)
1.各个配置文件的配置说明 providers.config:指定数据库提供者,.Net版本等信息. xxxxx.xml:映射规则. SqlMap.config:大部分配置一般都在这里,如数据库连接等 ...
随机推荐
- Linux命令(十六) 压缩或解压缩文件和目录 zip unzip
目录 1.命令简介 2.常用参数介绍 3.实例 4.直达底部 命令简介 zip 是 Linux 系统下广泛使用的压缩程序,文件压缩后扩展名为 ".zip". zip 命令用来将文件 ...
- Docker(三)-Docker中Image、Container与Volume的迁移
Image 镜像的迁移,适用于离线环境. 一般离线环境,都会自建Docker Registry. 无论 官方的 ,还是最近流行的 Harbor ,都是不错的选择. 但是,这个世界上就是有些环境,或者说 ...
- SVN for Mac
SVN for Mac https://www.wikihow.com/Install-Subversion-on-Mac-OS-X https://subversion.apache.org/pac ...
- python updata与深拷贝
当使用updata更新字典时候 被动更新和主动更新的效果是一样的 意思是说 里面会添加值 而不是保持不变 当将一个字典每次新增到列表时候 要用深拷贝 因为直接append的话 会修改将最新的变量的值同 ...
- 安装selenium和chromedriver
网上找的算法,在运行爬虫代码时,需要Selenium+Phantomjs实现,我改成了用Selenium+Chrome:针对指定网址,自动打开浏览器,输入关键词搜索,并保存搜索的内容. 1. 安装se ...
- Github Desktop 克隆仓库一直出现“Authentication failed”
如图所示: 解决方法: 使用ssh链接下载而不是https
- 算法-动态规划DP小记
算法-动态规划DP小记 动态规划算法是一种比较灵活的算法,针对具体的问题要具体分析,其宗旨就是要找出要解决问题的状态,然后逆向转化为求解子问题,最终回到已知的初始态,然后再顺序累计各个子问题的解从而得 ...
- 神奇:java中float,double,int的值比较运算
float x = 302.01f; System.out.println(x == 302.01); //false System.out.println(x == 302.01f); // ...
- python deamon(守护)线程的作用
stackoverflow 上的解释 某些线程执行后台任务,例如发送keepalive数据包,或执行定期垃圾收集,或任何.这些仅在主程序运行时有用,并且一旦其他非守护程序线程退出就可以将其关闭. 没有 ...
- 位运算符和unity Layers
按位运算符:与(&).非(~).或(|).异或(^).<<(左移).>>(右移).位运算符主要用来对二进制位进行操作. 逻辑运算符:&&.||.!.逻辑 ...