IBatis.Net使用总结(四)

时间:2022-02-03 21:40:35

 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参数。

IBatis.Net使用总结(四)IBatis.Net使用总结(四)
CREATE PROCEDURE up_GetCountByTitle
@title VARCHAR(
100) ,
@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属性。

IBatis.Net使用总结(四)IBatis.Net使用总结(四)
<?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;
}