IBatis 调用存储过程

http://www.cnblogs.com/jeffwongishandsome/archive/2010/01/10/1543219.html

http://www.cnblogs.com/firstyi/archive/2008/01/25/1053208.html

存储过程大致分为两种:

  • 查询类存储过程——select查询类的存储过程,不曾改变数据库数据的存储过程
  • 更新类存储过程——Update/Insert/Delete类型的存储过程,改变数据库数据的存储过程

IBatis.net调用存储过程:

1、查询类型的存储过程

创建一个查询类存储过程,其中包含output参数。

CREATE PROCEDURE up_GetCountByTitle
    @title VARCHAR()    ,
    @total INT OUT
    AS
    BEGIN
        WITH a AS (
        SELECT * FROM Article a WHERE a.ArticleTitle LIKE '%'+@title+'%')
        SELECT @total=COUNT(*) FROM a
    END

获取总数的存储过程

XML文件,如果包含输出参数,输出参数属性值,必须包含column属性。

<?xml version="1.0" encoding="utf-8" ?>
<sqlMap namespace="Article"
    xmlns="http://ibatis.apache.org/mapping"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

  <alias>
    <typeAlias alias="Article" type="YY.MicroNet.Model.Article,YY.MicroNet.Model"/>
  </alias>

  <resultMaps>
    <resultMap id="FullResultMap" class="Article">
      <result property="PKArticle" column="PK_Article" dbType="VarChar"/>
      <result property="ArticleTitle" column="ArticleTitle" dbType="NVarChar"/>
      <result property="ArticleAuthor" column="ArticleAuthor" dbType="NVarChar"/>
      <result property="ArticleContent" column="ArticleContent" dbType="NVarChar"/>
      <result property="EditTime" column="EditTime" dbType="DateTime"/>
      <result property="Dr" column="Dr" dbType="Bit"/>
      <result property="Ts" column="Ts" dbType="DateTime"/>
    </resultMap>
    <parameterMaps>
      <!--parameterMap中的参数个数和顺序要和up_GetCountByTitle存储过程中的一致-->
      <parameterMap id="params" class="Hashtable">
        <parameter property="title" />
        <parameter property="total" column="total" direction="Output"/>
      </parameterMap>
    </parameterMaps>
  </resultMaps>

  <statements>
    <!--调用查询类型的存储过程-->
    <procedure id="Article_GetCountByTitle" parameterMap="" resultClass="System.Int32">
      up_GetCountByTitle
    </procedure>
  </statements>
</sqlMap>

ArticleMap.xml

在cs中调用

        public IList<Article> GetCountByTitle(Hashtable ht)
        {
            String stmtId = "Article_GetCountByTitle";
            IList<Article> result = SqlMap.QueryForList<Article>(stmtId,  ht);
            return result;
        }

  

IBatis.Net使用总结(四)-- IBatis 调用存储过程的更多相关文章

  1. Java和Ibatis调用存储过程并取得返回值详解

    Java和Ibatis调用存储过程并取得返回值详解 2011-07-19 17:33 jiandanfeng2 CSDN博客 字号:T | T 本文主要介绍了Java和Ibatis调用存储过程的方法, ...

  2. MySQL 存储过程实例 与 ibatis/mybatis/hibernate/jdbc 如何调用存储过程

    虽然MySQL的存储过程,一般情况下,是不会使用到的,但是在一些特殊场景中,还是有需求的.最近遇到一个sql server向mysql迁移的项目,有一些sql server的存储过程需要向mysql迁 ...

  3. iBatis调用存储过程以及MySQL创建存储过程

    首先是MySQL中创建存储过程的SQL -- 列出全部的存储过程 SHOW PROCEDURE STATUS; -- 查看一个已存在的存储过程的创建语句,假设此存储过程不存在,会提示SQL错误(130 ...

  4. Ibatis调用存储过程实现增删改以及分页查询

    1.Ibatis实现增删改操作很简单了,通常我是将某一模块的增删改功能写在一个存储过程里,通过一个标识符去区分执行增加还是修改抑或删除操作. statement: <!-- 存储过程:实现学生的 ...

  5. ibatis 调用存储过程

      ibatis 调用存储过程 CreationTime--2018年8月15日19点38分 Author:Marydon 1.返回系统游标集合 第一步:返回值,将返回值封装到HashMap中 < ...

  6. ibatis调用存储过程(无返回参数)

    ibatis调用存储过程例子: java: getSqlMapClientTemplate().insert(sql, paraMap) ibatis xml: <parameterMap id ...

  7. ASP.NET MVC深入浅出(被替换) 第一节: 结合EF的本地缓存属性来介绍【EF增删改操作】的几种形式 第三节: EF调用普通SQL语句的两类封装(ExecuteSqlCommand和SqlQuery ) 第四节: EF调用存储过程的通用写法和DBFirst模式子类调用的特有写法 第六节: EF高级属性(二) 之延迟加载、立即加载、显示加载(含导航属性) 第十节: EF的三种追踪

    ASP.NET MVC深入浅出(被替换)   一. 谈情怀-ASP.NET体系 从事.Net开发以来,最先接触的Web开发框架是Asp.Net WebForm,该框架高度封装,为了隐藏Http的无状态 ...

  8. [原创]java WEB学习笔记79:Hibernate学习之路--- 四种对象的状态,session核心方法:save()方法,persist()方法,get() 和 load() 方法,update()方法,saveOrUpdate() 方法,merge() 方法,delete() 方法,evict(),hibernate 调用存储过程,hibernate 与 触发器协同工作

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  9. 第四节: EF调用存储过程的通用写法和DBFirst模式子类调用的特有写法

    一. 背景 上一个章节,介绍了EF调用两类SQL语句,主要是借助 ExecuteSqlCommand  和 SqlQuery 两个方法来完成,在本章节主要是复习几类存储过程的写法和对应的EF调用这几类 ...

随机推荐

  1. [Machine Learning & Algorithm] 神经网络基础

    目前,深度学习(Deep Learning,简称DL)在算法领域可谓是大红大紫,现在不只是互联网.人工智能,生活中的各大领域都能反映出深度学习引领的巨大变革.要学习深度学习,那么首先要熟悉神经网络(N ...

  2. Elasticsearch Configuration 中文版

    ##################### Elasticsearch Configuration Example ##################### # This file contains ...

  3. VSTO PowerPoint 代码删除Shape后再恢复出现无法再次获取的问题

    做PowerPoint的VSTO插件项目,遇到个很奇怪的问题,当代码执行删除某些Shape时,没问题,但是操作Undo也就是恢复后,无法再次获取到之前删除的对象,这种情况只在Office2007中出现 ...

  4. ubuntu系统theano和keras的安装

    说明:系统是unbuntu14.04LTS,32位的操作系统,以前安装了python3.4,现在想要安装theano和keras.步骤如下: 1,安装pip sudo apt-get install ...

  5. Java课程设计--山寨版QQ

    Java课设要求做一个聊天通讯窗口,索性直接照着QQ撸了一个Demo出来 界面高仿qq,初学JAVA,技术比较渣,不喜勿喷 线程开的比较多性能不是太好,一般电脑开两个客户端聊天就卡卡的 先上图 使用方 ...

  6. 【HEOI2012】采花 BZOJ2743

    Description 萧芸斓是Z国的公主,平时的一大爱好是采花. 今天天气晴朗,阳光明媚,公主清晨便去了皇宫中新建的花园采花.花园足够大,容纳了n朵花,花有c种颜色(用整数1-c表示),且花是排成一 ...

  7. shell语法

    基本语法列表 #linux组成:内核+工具 #linux启动: . getty:提示登录名和密码,输入之后调用login . login:login验证用户名和密码,然后调用shell . shell ...

  8. AxureRp 打开SVN上的团队项目

    打开Axure,在菜单项中,点击 "团队" 菜单,选择 "获取团队项目": 切换到 "SVN" 选项, 填写正确的Axure项目的路径,打开 ...

  9. 【krpano】加密XML手动解密分析

    krpano允许对XML文件进行加密,对XML进行相应的保护.加密分为两种,第一种为公共加密,即允许其他krpano全景读取该XML,而另一种为私有加密,仅允许加密的用户读取XML.两种加密方式的算法 ...

  10. jQuery最佳实践

    1:事件的委托处理(Event Delegation) javascript的事件模型,采用"冒泡"模式,也就是说,子元素的事件会逐级向上"冒泡",成为父元素的 ...