MicroHelper.Net

雷锋说.对待朋友要MicroHelper,对待敌人要害尔扑
随笔 - 74, 评论 - 431, 引用 - 7

导航

工具

关于

邮件系统不稳定,使用songdming at 263 dot net吧
PageRank

FastCounter by bCentral

 

标签

每月存档

广告



访客

 

iBATIS的net版本现在是iBATIS.Net-V0.9iBATIS.Net-V0.9beta
http://sourceforge.net/projects/ibatisnet

iBATIS和其他的ORMapping的工具相比有点奇怪,可以说是一个sqlmap,所以在Why use iBATIS SQL Maps? 中有一条理由是
You already know SQL, why waste time learning something else?

iBATIS的cache模式可以灵活的配置
<cacheModel name="account-cache" implementation="LRU" >
 <flushInterval hours="24"/>
 <flushOnExecute statement="UpdateAccountViaInlineParameters"/>
 <flushOnExecute statement="UpdateAccountViaParameterMap"/>
 <property name="CacheSize" value="50"/>
</cacheModel>

(UpdateAccountViaInlineParameters和UpdateAccountViaParameterMap表示两个对数据库的访问动作)

sql语句有三种基本形式
存储过程
<procedure name="InsertAccountViaStoreProcedure" parameterMap="insert-params">
   sp_InsertAccount
</procedure>

命名的参数
<insert name="InsertAccountViaInlineParameters" parameterClass="Account" >
 insert into Accounts
  (Account_ID, Account_FirstName, Account_LastName, Account_Email)
 values
  (#Id#, #FirstName#, #LastName#, #EmailAddress:VarChar:no_email@provided.com#
  )
</insert> 

未命名的参数
<statement name="InsertOrderViaParameterMap"  parameterMap="insert-params" >
 insert into Orders 
  (Order_ID, Account_ID, Order_Date, Order_CardExpiry, Order_CardType,
 Order_CardNumber, Order_Street, Order_City, Order_Province, Order_PostalCode )
 values
  (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
/statement>

参数的映射关系通过parameterMap来定义
<parameterMap name="insert-params">
 <parameter property="Id" />
 <parameter property="FirstName" />
 <parameter property="LastName" />   
 <parameter property="EmailAddress" nullValue="
no_email@provided.com"/>
</parameterMap>

返回的结果通过<resultMap来定义
<resultMap name="order-joined-favourite" class="Order">
 <result property="Id"     column="Order_ID"/>
 <result property="Date"     column="Order_Date"/>
 <result property="CardExpiry"   column="Order_CardExpiry"/>
 <result property="CardType"    column="Order_CardType"/>
 <result property="CardNumber"   column="Order_CardNumber"/>
 <result property="Street"    column="Order_Street"/>
 <result property="City"     column="Order_City"/>
 <result property="Province"    column="Order_Province"/>
 <result property="PostalCode"   column="Order_PostalCode"/>
 <result property="FavouriteLineItem" resultMapping="LineItem.LineItem" />
</resultMap>

不过现在还不清楚返回"Hashtable"是指什么
<resultMap name="lite-order-map-result" class="Hashtable">
 <result property="Id"         column="Order_ID"/>
 <result property="Date"       column="Order_Date"/>
 <result property="CardExpiry" column="Order_CardExpiry"/>
 <result property="CardType"   column="Order_CardType"/>
 <result property="CardNumber" column="Order_CardNumber"/>
 <result property="Street"     column="Order_Street"/>
 <result property="City"       column="Order_City"/>
 <result property="Province"   column="Order_Province"/>
 <result property="PostalCode" column="Order_PostalCode"/>
</resultMap>


有一些组合查询的结果
<asp:BoundColumn DataField="Account_Name" HeaderText="Name">
<asp:BoundColumn DataField="Account_Email" HeaderText="Email">
为了消除对数据库的直接依赖,DataField="Account_Name" 这样的写法是不合适的,还没发现iBATIS用哪种方式做map的。


另外,
我们原先采用强类型的方式调用procedure,这样的话开发人员在定义变量后加一个.就可以知道需要传递那些参数,
比如,
sp_InsertAccount proc= new sp_InsertAccount();
proc.Name ="";
proc.Email ="";
DBHelper.ExecuteSql(proc)

但是改成依赖NameValue集合甚至位置来传递参数,不知道会不会有问题

相关文章

打印 | 张贴于 2004-08-26 15:10:00 | Tag:Dot Net

留言反馈

#回复: iBATIS.Net 编辑
2007-12-18 05:04:00 | [匿名用户:runescape money]
#回复: iBATIS.Net 编辑
这个不可能是IBATIS的问题,是你程序其他地方的问题
2007-06-12 14:48:00 | [匿名用户:king]
#re: iBATIS.Net 编辑
你好,有个问题,向你请教,我现在应用ibatis.net开发一个web,但是每次启动的时候特别慢,怎么解决呢?
2006-11-18 21:43:00 | [匿名用户:yushan]
#re: iBATIS.Net 编辑
这些都可以从java版的得到,而且有完整的中文版手册,可惜我刚开始.Net,很多配置我不太熟悉,希望能给个可以运行的最小的demo!谢谢了
2004-09-30 16:34:00 | [匿名用户:dannyr@163.com]
对不起,目前本随笔不允许发表新评论.

Powered by: Joycode MVC Blogger System