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(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属性。
<?xml version="1.0" encoding="utf-8" ?>ArticleMap.xml
<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>
在cs中调用
public IList<Article> GetCountByTitle(Hashtable ht)
{
String stmtId = "Article_GetCountByTitle";
IList<Article> result = SqlMap.QueryForList<Article>(stmtId, ht);
return result;
}