程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> 搞定了一個使用IBatis.Net的問題

搞定了一個使用IBatis.Net的問題

編輯:.NET實例教程

今天解決了一個IBatis.Net的使用的問題,這個問題困擾了很久。在做一個管理系統,後台Server采用的是HTTP Server+DB來提供服務。 最初使用的是Perl+BerkeleyDB,演進到Servlet+MySQL,然後又演進到ASP.NET + SQL Server,從Servlet開始ORM使用的是Hibernate,到了ASP.NET後,Hibernate轉變為了NHibernate。一次偶然的機會,接觸到了別人的一個系統,也想把這個管理系統中的NHibernate替換為IBatis.Net,並且把請求統一放到一個Controller進行Dispatch,也可以在Controller中加入日志、權限、驗證等機制。當然,對於Struts等框架都是采用類似的機制完成的。自己也是一種借鑒和學習。在測試使用IBatis.Net的時候遇到一個問題,NHibernate的時候,插入一個對象,就可以獲得這個對象對應的記錄的自動生成的PK。IBatis可以通過SelectKey來做,我確實也有在Java下的例子,可是在網上看到的一些資料指出的在IBatis.Net中的用法,但是不能成功。一直搞了很久。今天終於是解決了。自己給自己記錄一下吧。

<statements>
  <statement  id="INSERT-ADMIN" resultClass="int">
      insert into admin (lastlogin, flag, controlflag, username, passWord, description)
      values (#LastLogin#, #Flag#, #ControlFlag#, #Username#, #PassWord#, #Description#)

      SELECT SCOPE_IDENTITY()  AS value

    </statement >

這個是正確的寫法,不需要用到selectKey,自己以前的錯誤在兩個地方,一個是在statement中沒有寫resultClass,另外一個就是用 select @@IDENTITY as id(value),始終不行,這個我一直沒有搞明白是什麼原因。只是根據自己的需要,返回的應該是這個scope中的id,所有使用select scope_identity 就可以了。

 


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved