ibatis 快速上手

简介


    iBATIS Data Mapper framework 使JACA和。NET应用程序在使用数据库上变的更容易。
IBATIS通过XML描述把对象(Hashtable、java/.NET object   int 、string等)作为输入或者输出跟SQL语句或者存储过程联系起来。

    iBATIS Data Mapper 最大的优势是把相关联的对象映射起来.使用iBATIS Data Mapper,你只要知道对象、XML、SQL,你只需要学习很少的东西便可以上手。  使用iBATIS Data Mapper,你可以把你的精力放在SQL和存储过程上面。

01

 

例子


     现在我们我们通过一个简单的案例,了解如何通过iBATIS解决数据访问问题。
现在有有一个数据库,数据库里面有一张人员信息表
需求是这样:
   “通过一个WEB应用程序显示人员信息表里面的信息,并且可以添加、修改、删除人员记录”
     一个并不复杂的案例,但是它覆盖所有开发首先要学习的内容。

 

 第1步:The SQL


    我们从案例中的数据表开始,为了简单起见,我们假设数据是ACCESS数据库。表的定义如下:

 

NameTypeSize
PER_IDLong Integer4
PER_FIRST_NAMEText40
PER_LAST_NAMEText40
PER_BIRTH_DATE Date/Time8
PER_WEIGHT_KG Double8
PER_HEIGHT_M Double8


第2步 The.NET Class

 

 

Person.cs

 

   

 

第3步 The Nunit test


    这里测试案例的第一个需求,显示人员列表。

 

PersonTest.cs

     Assert是NUnit的一个类,如此编译,我们只需要MAPPER对象和QueryForList方法。Mapper是 iBATIS 框架里面的一个类,所以我们只需要调用它们。QueryForList方法执行我们的SQL语句(或者储存过程)并且返回一个list类型的结果。

 

    结果中的每一行成为列表中条目。除了QueryForList,这里还有Delete, Insert, Select, QueryForObject等方法在iBATIS API中。
    通过PersonTest类,可以看到 QueryForList 方法的输入参数里面有我们想要运行的SQL语句(或者存储过程)的映射值的Key(我们假设这个映射分为Key和Value)和SQL语句(或者存储过程)需要的运行参数。因为"SelectAll" 不需要任何任何运行参数,我们输入的是null值.

 

    足够简单吧!但是这是我们有一个问题!iBATIS是怎么获取"SelectAll"这个键对应的值(值为sql语句或者储存过程)的呢?
    这里就要提到iBATIS的特色数据映射,不需要把SQL写在代码里面。这个任务可以是我们的,也可以是管理数据库。现在我们把这些映射的的描述写在XML元素里面,如下:

    

  Step 4 :The mapping file

 

Person.xml

     iBATIS映射文档可以包含多个象上面一样关联元素集,如果需要还可以写多个映射文档。多映射文档方便多个开发者同时开发一个工程。
  就这样,框架通过解析映射文档获得了SQL语句并放进准备好的环境中。但是,这里又有一个问题! iBATIS怎么找到数据源的。

    这里,你可以为你的应用程序用到的每一个数据源定义一个配置文件。下面是为我们的ACCESS数据库定义的一个配置文件。

 

 Step 5 :The configuration file

  

SqlMap.Config - A configuration file for our Access database

 

     当然,除了Access,还支持ADO.NET的其他providers包括 SqlServer, Oracle, MySQL, PostgreSQL, DB2 and generic OLEDB, ODBC providers. 
     配置文件的最后一部分("sqlMaps")描述了映射文档(第4部对映射有所描述)所在位置。这里我们可以列举多个我们需要的映射文档,在解析配置文件的时候它们都会被读到。

 

    怎么解析配置文件呢?

 

    回过去看第3部的PersonTest类。代码的重点放在"Mapper"对象上面,"Mapper"对象是一个单件。在它第一次被调用之前,读取配置文件创建Mapper对象。Mapper的一系列调用过程及一系列的重用过程。所以在一系列调用过程除非配置文件改不会多次读取。

 

    ibatis框架携带了多个不同的Mapper类。如果你想用一个不同名字的配置文件,或者需要多个数据库,你同样可以用过复制修改标准版本的Mapper类拥有你自定义的Mapper类。

 

   下面是框架里面标准Mapper类的代码。

Mapper.cs

     你可以根据需要访问多个不同的数据配置,通过设置附加的Mapper类。每一个Mapper的配置对应一个数据库,对我们的应用程序来说,MAPPER就是数据库。透过Mapper门户,你可以在不修改应用程序代码的情况下 修改数据库的位置和完成SQL语句和储存过程的转换

 

   Step 5 :Running the test


   如果我们上面的所有代码和配置文件映射文件放进解决方案。我们可以"蓝色进度条"我们的测试。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值