简介
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和存储过程上面。
例子
现在我们我们通过一个简单的案例,了解如何通过iBATIS解决数据访问问题。
现在有有一个数据库,数据库里面有一张人员信息表
需求是这样:
“通过一个WEB应用程序显示人员信息表里面的信息,并且可以添加、修改、删除人员记录”
一个并不复杂的案例,但是它覆盖所有开发首先要学习的内容。
第1步:The SQL
我们从案例中的数据表开始,为了简单起见,我们假设数据是ACCESS数据库。表的定义如下:
Name | Type | Size |
PER_ID | Long Integer | 4 |
PER_FIRST_NAME | Text | 40 |
PER_LAST_NAME | Text | 40 |
PER_BIRTH_DATE | Date/Time | 8 |
PER_WEIGHT_KG | Double | 8 |
PER_HEIGHT_M | Double | 8 |
第2步 The.NET Class
第3步 The Nunit test
这里测试案例的第一个需求,显示人员列表。
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
iBATIS映射文档可以包含多个象上面一样关联元素集,如果需要还可以写多个映射文档。多映射文档方便多个开发者同时开发一个工程。
就这样,框架通过解析映射文档获得了SQL语句并放进准备好的环境中。但是,这里又有一个问题! iBATIS怎么找到数据源的。
这里,你可以为你的应用程序用到的每一个数据源定义一个配置文件。下面是为我们的ACCESS数据库定义的一个配置文件。
Step 5 :The configuration file
当然,除了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类。每一个Mapper的配置对应一个数据库,对我们的应用程序来说,MAPPER就是数据库。透过Mapper门户,你可以在不修改应用程序代码的情况下 修改数据库的位置和完成SQL语句和储存过程的转换
Step 5 :Running the test
如果我们上面的所有代码和配置文件映射文件放进解决方案。我们可以"蓝色进度条"我们的测试。