http://dragonsuc.cnblogs.com/archive/2006/07/04/ibatisnet.html

IbatisNet的介绍和使用http://files.cnblogs.com/dragonsuc/Ibatisnet.rar

IBATISNet是一个使得SQL 语句或者 stored procedures与实体对象容易映射起来、简洁完整的框架,iBATIS framework将是你用更少的代码获得更多的数据库访问功能。

http://shanyou.cnblogs.com/archive/2006/04/29/388610.html上面已经有几介绍的文章,都不错,让我有自己写不出内容的感觉,思考再三,还是写一点东西,一是介绍下为什么使用IbatisNet,它为我们解决了什么问题,二是梳理一下使用步骤

为什么需要IbatisNet??

我们先假定几个过去和现在使用ADO.NET操作数据库的场景

1 场景一 我们很难将操作数据库的sql语句从代码中分离,在著名的petshop3.0等例子也使用数据访问层将sql集中到一起,为此当我们改变sql语句不得不重新编译整个项目的代码

2 场景二 我们很难将实际的外观层,业务逻辑层和数据访问层分离,举例,你通过查询语句”Select A.Name,B.Qty from  Cart A ,CartQty B where A.ID=B.ID” ,你在界面进行数据绑定时写下入下代码

<asp:BoundColumn DataField="Name" HeaderText="First"></asp:BoundColumn>

现在,根据查询语句发生变化”Select C.Code,B.Qty from  Cart2 C ,CartQty B where C.ID=B.ID”,我们不得不重新编写外界的代码或者写含有别名的sql语句

IbatisNet解决问题

iBATIS DataMapper通过使用XML文档在sql语句和实体对象之间建立映射。

基本的步骤如下:

1) 提供一个参数,无论是对象还是一个Native类型。参数将用于设置sql语句或存储过程在运行时的值,如果运行时不需要参数,将忽略参数

2) 通过传送参数和在你的xml配制中的声明名字或者存储过程来执行映射。这一步将是魔术般的步骤。框架将会准备sql声明或者存储过程,用你的参数设置运行时数据值,执行sql语句或者存储过程,返回结果。

3) 在更新的时候,更新的行数将会被返回。在查询的时候,返回的将是一个对象或者对象的集合。结果对象,可以是一个plan-old对象或者native类型。

上面的过程在代码中的实现

你可以这样写一条语句就将你在界面上建立的实体类插入数据库

Mapper.Instance().Insert("InsertLineItem",lineItem);

// lineItem 是一个实体类的对象

你需要配制一个InsertLineItem.xml文档

<insert id="InsertLineItem" parameterClass="LineItem">

INSERT INTO [LinesItem]

(Order_Id, LineItem_LineNum, Item_Id, LineItem_Quantity, LineItem_UnitPrice)

VALUES

(#Order.Id#, #LineNumber#, #Item.Id#, #Quantity#, #Item.ListPrice#)

<selectKey type="post" resultClass="int" property="Id" >

select @@IDENTITY as value

</selectKey>

</insert>

如果你需要获得多行或者单行的数据,你可以这样在外界调用

IList productList = Mapper.Instance().QueryForList("selectProduct",categoryKey);

Product product = Mapper.Instance().QueryForObject("SelectProduct",productKey) as Product;

IbatisNet的配制文件介绍

1        providers.config 提供配制 常用的数据库连接程序 的xml文件

2        SqlMap.xml  SQL语句执行结果和实体对象之间的映射文件,在系统中将出现多个这样的文件

3        SqlMap.config – 决定在运行时加载sqlmap.xml与providers.config的文件

IbatisNet的使用

1  创建表Person 表

为了测试方便,我把Person放在了Northwind表中

Name              Type            Size

PER_ID            Long Integer      4   not null

PER_FIRST_NAME    nvarchar         40  not null

PER_LAST_NAME     nvarchar           40  not null

PER_BIRTH_DATE    DateTime         8

PER_WEIGHT_KG     float            8

PER_HEIGHT_M      float            8

CREATE TABLE [dbo].[Person] (

[PER_ID] [int] IDENTITY (1, 1) NOT NULL ,

[PER_FIRST_NAME] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,

[PER_LAST_NAME] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,

[PER_BIRTH_DATE] [datetime] NULL ,

[PER_WEIGHT_KG] [float] NULL ,

[PER_HEIGHT_M] [float] NULL

) ON [PRIMARY]

2  增加配制文件注意地方:所有配制文件都去看看其官方的文档为准

Person.xml

properties.config

sqlmap.config

    Person.xml中插入的语句配制

<insert id="Insert" parameterClass="Person">

<selectKey property="Id" type="post" resultClass="int">select @@IDENTITY as value</selectKey>

insert into PERSON

( PER_FIRST_NAME, PER_LAST_NAME,

PER_BIRTH_DATE, PER_WEIGHT_KG, PER_HEIGHT_M)

values

( #FirstName#, #LastName#,_par                 #BirthDate#, #WeightInKilograms#, #HeightInMeters#)

</insert>

properties.config中的数据连接配置

如果遇到问题,最好先看其说明文档,再通过单步调试。

2        定义Helper.cs类 返回一个SqlMapper SQL映射类

public abstract class Helper

{

public SqlMapper Mapper ()

{

return IBatisNet.DataMapper.Mapper.Instance ();

}

}

4  继续编写代码,形成最后项目IbatisTest

如果使用IbatisNet对里面的几个配制文件应该十分熟悉

IbatisNet的介绍和使用的更多相关文章

  1. IBatis.net介绍

    IBatis.net介绍 IBatis.net 是2001年发起的开源项目,它是一个轻量级的ORM框架,现在IBatisNET已经是属于Apache下的一个子项目了,最新版本是1.6.2. 官方网站: ...

  2. iBatisnet系列(二) 配置运行环境和日志处理

    http://hjf1223.cnblogs.com/archive/2006/04/24/383119.aspx 刚爬完鼓山回来,想到这篇刚刚开始,不敢怠慢,洗完澡休息一下就到电脑旁边来了.现在我开 ...

  3. IbatisNet开发使用小结

    一.   介绍 平常做企业级应用,需求变化是经常的事,而很多基础代码重复也是很让人头疼的问题.所以很多人会使用一些ORM框架来增强项目的可维护性.可扩展性.IBatis.Net就是一个比较易用的ORM ...

  4. 跟初学者学习IbatisNet第四篇

    这一章我们主要介绍一下IbatisNet里面的其它用法主要有以下几点: 1,如何得到运行时ibatis.net动态生成的SQL语句? 2,如何获取DbCommand? 3,如何返回DataTable, ...

  5. 跟初学者学习IbatisNet第三篇

    这一章我们主要介绍一下IbatisNet里面的动态sql语句的运用,比如有时候我们想进行模糊查询,参数是动态加入的.或者要实现top n ,order by ,分页等功能的时候,我们就不得不用动态拼接 ...

  6. 跟初学者学习IbatisNet第二篇

    在上一篇里面我们知道了什么是IbatisNet,并且知道了如何用IbatisNet进行简单的增删改查的操作,在这一篇文章里面我们主要介绍一下IbatisNet操作存储过程. 我们一般把存储过程分为两种 ...

  7. 跟初学者学习IbatisNet第一篇

    写在前面的话:我自己也是一个初学者,写这个专题只是为了对学过知识的巩固,如果有什么不对的地方,欢迎大家指正…………………… 第一篇就简单介绍一下什么是IbatisNet,然后写一个简单的Demo,在后 ...

  8. CSS3 background-image背景图片相关介绍

    这里将会介绍如何通过background-image设置背景图片,以及背景图片的平铺.拉伸.偏移.设置大小等操作. 1. 背景图片样式分类 CSS中设置元素背景图片及其背景图片样式的属性主要以下几个: ...

  9. MySQL高级知识- MySQL的架构介绍

    [TOC] 1.MySQL 简介 概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一种关联数据库管理系统,将数据保存在不同的表中,而 ...

随机推荐

  1. S2小测--索引--视图

    1.  关于Sql server 视图 视图是一个虚拟表,我们在查询视图的时候,实际上是对基础表的查询.视图不仅可以作为SELECT查询的目标,也可以作为修改语句的目 标.理论上它可以像普通的物理表一 ...

  2. SQL SERVER提供了大量的WINDOWS和SQLSERVER专用的排序规则

    初始选择结果 select * from WordDictionary 下面是按照汉字拼音排序 select * from WordDictionary order by word collate C ...

  3. VBS基础篇 - 过程(sub 与 Function)

    VBS基础篇 - 过程(sub 与 Function) 在VBscript中,有两种procedure:Sub procedure与Function procedure Sub过程:是包含在 Sub  ...

  4. 熟悉linux开发环境(实验)

    北京电子科技学院(BESTI) 实验报告 课程: 深入理解计算机系统 班级: 1353班 姓名:张若嘉 杨舒雯 学号:20135330 20135324 成绩: 指导教师:娄嘉鹏 实验日期:2015. ...

  5. Jenkins入门系列之——00答疑解惑

    写在最前的总结:Jenkins其实就是一个工具,这个工具的作用就是调用各种其他的工具来达成你的目的.比如你要获取Subversion上最新的源代码,Jenkins会去调用SVNKIT(插件的核心Jar ...

  6. Swift与Objective-c 混编CocoaPods 引入第三方库遇到的问题 (一)

    最近Swift 这么火也想尝试着用一下.考虑到Swift 出来的时间也不长.还有就是就是苹果更新的过于平凡 暂时还是不要将现有项目都用swift开发. 先来看看我遇到的问题: 问题一.

  7. Day10

    会议讨论 628:今天是冲刺的最后一天了,好紧张好激动,我们组还有好些个功能没实现呢,感觉崩崩哒!还要实现选择不同的专业导入不同的课表呢. 601:在修改教师帐号信息的页面要有当密码格式.用户名格式等 ...

  8. 使用Web Deploy进行远程部署

    Web Deploy支持直接从本地Visual Studio的工程文件部署网站到远程服务器,部署的过程中可以对比哪些文件变化了需要拷贝,而不是一股脑的全部拷贝,效率和准确性会更好. 部署的过程主要要注 ...

  9. WordPress HOOK机制原理及代码分析

    WordPress强大的插件机制让我们可以自由扩展功能.网上对插件的使用以及开发方法都有大量资料可以查询. 今天我们就分析一下四个主要函数的代码,包括: add_action.do_action.ad ...

  10. 【转】变量的声明和定义,从C到编译原理到C++,再到Java

    基础学了太久,时间一长有些东西就可能记得不太清楚,俗话说得好,"好记性不如烂笔头",所以把基础中的基础-变量的声明和定义,从C到编译原理到C++,再到Java用烂笔头记录下来 最早 ...