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; }