IbatisNet的实战应用

在Asp.net中应用IbatisNet框架,第一个需要解决的就是配置问题。实际上,这个过程非常简单。

        在开发包里我们可以找到providers.config文件。这是一个数据库连接参数的配置文件。这里,已经包括了各种我们常用的数据库,每一个<provider />就是一种连接方式。我们要做的就是根据项目实际使用的数据库类型,选中一种合适的连接方式,将对应的<provider>中的"enabled"属性值改为"true",其他的全改为false.这是第一步。然后我们就要配置sqlmap.config。如下:

<?xml version="1.0" encoding="UTF-8" ?>
<sqlMapConfig xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="SqlMapConfig.xsd">
 

<settings>
  <setting useStatementNamespaces="false"/>
  <setting cacheModelsEnabled="true"/>
 </settings>
 
 <database> 
  <provider name="sqlServer1.1"/>
  <dataSource name="test"  connectionString="server=hpserver;database=testDB;user id=test;password=123;Connection Reset=FALSE;Min Pool Size=1;Max Pool Size=100"/>
 </database>

 <sqlMaps>
  <sqlMap resource="maps/HotelFacility.xml"/>
 </sqlMaps>

</sqlMapConfig>

这里<database>中,<provider>的name属性填上刚才proviers.config文件中对应的数据库连接名称。值得注意的是,在连接字符串中可以直接设置连接池。<sqlMaps>中,设置sql语句的配置文件相对路径。

下面是sql语句的配置文件内容:

<?xml version="1.0" encoding="UTF-8" ?>

<sqlMap namespace="HotelFacility" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:noNamespaceSchemaLocation="SqlMap.xsd">

 <alias>
  <typeAlias alias="HotelFacility" assembly="Ehotel.dll" type="Etmc.App.Ehotel.Hotel.HotelFacilityInfoVo" />
 </alias>
       
 <resultMaps>                                   
  <resultMap id="HotelFacilityResult" class="HotelFacility">
   <result property="Introduce"  column="Introduce"/>
   <result property="Meal"    column="Meal"/>
   <result property="Meeting"   column="Meeting"/>
   <result property="Fallow"   column="Fallow"/>
   <result property="Service"   column="Service"/>
   <result property="Subject"   column="Subject"/>
   <result property="SubjectContent" column="SubjectContent"/>
   <result property="RoomNum"   column="RoomNum"/>
  </resultMap>
 </resultMaps>
 
 <!-- =============================================
        MAPPED STATEMENTS
    =============================================
    -->
 <statements>
 
  <select id="GetHotelFacility" resultMap="HotelFacilityResult" parameterClass="string">
   select
    Introduce,     
    Meal,
    Meeting,
    Fallow,
    Service,
    Subject,
    SubjectContent,
    RoomNum
   from Hotel
   where HotelId = #value#
  </select>
  
  <update id="SaveHotelFacility" parameterClass="HotelFacility" resultClass="int">
   update Hotel set
    Introduce = #Introduce#,
    Meal = #Meal#,
    Meeting = #Meeting#,
    Fallow = #Fallow#,
    Service = #Service#,
    Subject = #Subject#,
    SubjectContent = #SubjectContent#,
    RoomNum = #RoomNum#
   where HotelId = #HotelId#
  </update>
  
 </statements>
 
</sqlMap>

<alias>中定义值对象所在dll包及包名。
<resultMaps>定义值对象中各值与数据库字段的映射关系
<statements>定义数据库操作语句。 如果需要传入多个参数,可以以值对象的形式传参,语句中以对象中的属性名引用,首尾加上#。

下面是刚才提到的值对象的代码:

[Serializable]
 
public   class  HotelFacilityInfoVo
 
{

 
Private Fields

  
Properties
 }

 

下面最后一步,在Dao中调用。在这里提一下,对于获取sqlmapper实例,大致有两种方式:

一、ISqlMapper mapper = IBatisNet.DataMapper.Mapper.Instance();
二、DomSqlMapBuilder builder = new DomSqlMapBuilder();
        mapper = builder.Configure();

第一种方法是线程安全的,获得的是唯一实例,在并发访问的时候会出错。因此,为了支持并发访问,所以我选择了第二种方法。至于第一种相比第二种方法的优点,我也不是很清楚。下面执行的语句就非常容易了。

HotelFacilityInfoVo hotelFacility = (HotelFacilityInfoVo)mapper.QueryForObject("GetHotelFacility", innHotelID);

这里返回的是个值对象,QueryForObject方法的第一参数是配置文件定义的查询语句的名称,第二个参数是执行查询语句的输入参数(当多个参数时,可传入值对象)。另外,框架还提供其他多种查询方式,可以参考使用手册。

这样,一个简单的实战应用就完成了,此文只是简单描述一下IbatisNet框架的配置及应用方式,具体更深入的东东还得研究官方提供的参考手册了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值