IBatis.Net學習筆記(七):在IBatis.Net中調用存儲過程 – JAVA編程語言程序開發技術文章

其實調用方式比較簡單,主要也就是兩種類型的存儲過程:

1、更新類型的存儲過程

2、查詢類型的存儲過程

下面就來看看具體的調用方式:

1、更新類型的存儲過程

sp_InsertAccount:

CREATE PROCEDURE [dbo].[sp_InsertAccount]

    — Add the parameters for the stored procedure here

   @Account_ID int,

   @Account_FirstName varchar(32),

   @Account_LastName varchar(32)AS

BEGIN

insert into accounts (account_id, account_firstname, account_lastname) 

    values (@Account_ID,@Account_FirstName,@Account_LastName )

END

Map配置文件:

        <procedure id="InsertAccountViaStoreProcedure" parameterMap="insert-params_new">

            sp_InsertAccount

        </procedure>

 

    <parameterMap id="insert-params_new" class="Account">

      <parameter property="Id" />

      <parameter property="FirstName" />

      <parameter property="LastName" />

    </parameterMap>

 

這裡要註意的就是ParameterMap中的參數個數和順序要和sp_InsertAccount存儲過程中的一致

Ado中的調用代碼:

        public void InsertAccountViaStoreProcedure(Account account)

        {

            try

            {

                sqlMap.Insert("InsertAccountViaStoreProcedure", account);

            }

            catch (DataAccessException ex)

            {

                throw new DataAccessException("Error executing InsertAccountViaStoreProcedure. Cause :" + ex.Message, ex);

            }

        }

這裡使用的是sqlMap.Insert的方法,為瞭看起來直觀一點,其實使用sqlMap.QueryForObject方法的話效果也是一樣的:)

 

2、查詢類型的存儲過程

GetAccountByName:

CREATE PROCEDURE [dbo].[GetAccountByName]

    @name varchar(32)

AS

BEGIN

select * from accounts where Account_FirstName like '%' + @name + '%'

END

 

Map配置文件:

    <procedure id="GetAccountByNameViaStoreProcedure" resultMap="account-result" parameterMap="selectpro-params">

      GetAccountByName

    </procedure>

 

    <parameterMap id="selectpro-params" class="string">

      <parameter property="name"/>

    </parameterMap>

這裡parameterMap也是和上面的要求一樣,至於property的名字在這裡沒有實際作用,可以任意取名的

 

Ado中的調用代碼:

        public ArrayList GetAccountByNameViaStoreProcedure(string strName)

        {

            try

            {

                ArrayList list = (ArrayList)sqlMap.QueryForList("GetAccountByNameViaStoreProcedure", strName);

                return list;

            }

            catch (DataAccessException ex)

            {

                throw new DataAccessException("Error executing SqlAccountViaSqlMapDao.GetAccountById. Cause :" + ex.Message, ex);

            }

        }

 

 

 

作者 awp110

發佈留言