IbatisNet的介绍和使用

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

时间: 2024-11-17 03:40:19

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

IbatisNet开发使用小结

一.   介绍 平常做企业级应用,需求变化是经常的事,而很多基础代码重复也是很让人头疼的问题.所以很多人会使用一些ORM框架来增强项目的可维护性.可扩展性.IBatis.Net就是一个比较易用的ORM框架,使用起来较为方便.灵活.IBatis.Net是从Ibatis的Java版本移植过来的.NET版本.iBATIS作为一种独特的Data Mapper,使用SQL映射的方式将对象持久化至关系型数据库.简单的理解就是它将我们在数据访问层实现的C#逻辑代码,变为通过关系数据库与对象的映射,将SQL逻辑

PDA项目介绍

开发工具:Microsoft Visual Studio 2008 SDK:      Windows Mobile 6 SDK 数据库:     Oracle 开发语言:C#(3.5) 版本控制工具:TortoiseSVN 底层ORM框架:IBatisNet 模式:C/S 前端: 服务端: 运行效果:   PDA项目介绍,布布扣,bubuko.com

模具厂MES项目介绍

开发工具:Microsoft Visual Studio 2012 数据库:     Oracle 开发语言:C#(4.0) 版本控制工具:TortoiseSVN 底层ORM框架:IBatisNet 第三方UI:Infragistics NetAdvantage Windows Forms 2013.1 项目文件: 代码文件: 运行界面浏览: WEB报表: 模具厂MES项目介绍,布布扣,bubuko.com

IBatisNet之获取和操作SQL语句

IBatisNet和其他的ORMapping的工具相比较,可以说是一个sqlmap,所以在Why use iBATIS SQL Maps? 中有一条理由是 You already know SQL, why waste time learning something else? 所以在我们的实际框架中更多的地方需要得到SQL语句.在我的架构中有这样的接口: 复杂的SQL主要是查询,统计这样的功能接口:     DataTable GetDataTable(string tag, object p

IBatis.net介绍

IBatis.net介绍 IBatis.net 是2001年发起的开源项目,它是一个轻量级的ORM框架,现在IBatisNET已经是属于Apache下的一个子项目了,最新版本是1.6.2. 官方网站:http://www.mybatis.org/ .net项目下载地址:http://code.google.com/p/mybatisnet/ DataMapper:通过配置映射关系的xml业务对象与SQL语句和存储过程进行映射. DataAcces:简单的说就是IBatis的数据访问层. IBat

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

http://hjf1223.cnblogs.com/archive/2006/04/24/383119.aspx 刚爬完鼓山回来,想到这篇刚刚开始,不敢怠慢,洗完澡休息一下就到电脑旁边来了.现在我开始介绍一下iBatis的配置和日志处理吧. iBatis基本的运行环境配置主要由两个文件组成,分别是SqlMap.config和Provider.config.它们是必需的两个配置文件,基中SqlMap.config的功能类似于web.config或者app.config,是iBatis核心的配置文

数据库介绍与分类

目录 数据库介绍与分类... 1 1.1 数据库介绍... 2 1.1.1什么是数据库... 2 1.2数据库的种类... 2 1.2.1关系型数据库介绍... 2 1.2.2非关系型数据库介绍... 3 1.3 常用关系型数据库产品介绍... 4 1.3.1 Oracle数据库... 4 1.3.2 MySQL数据库... 5 1.3.3 MariaDB数据库... 5 1.3.4 SqlServer数据库... 6 1.3.5 Access数据库... 6 1.3.6 其他不常用数据库...

基于位置信息的聚类算法介绍及模型选择

百度百科 聚类:将物理或抽象对象的集合分成由类似的对象组成的多个类的过程被称为聚类.由聚类所生成的簇是一组数据对象的集合,这些对象与同一个簇中的对象彼此相似,与其他簇中的对象相异."物以类聚,人以群分",在自然科学和社会科学中,存在着大量的分类问题.聚类分析又称群分析,它是研究(样品或指标)分类问题的一种统计分析方法.聚类分析起源于分类学,但是聚类不等于分类.聚类与分类的不同在于,聚类所要求划分的类是未知的. 分类和聚类算法一直以来都是数据挖掘,机器学习领域的热门课题,因此产生了众多的

Centos 7.3下 Linux For SQL Server安装及配置介绍

Centos 7.3下Linux For SQL Server安装及配置介绍 说到SQL Server服务,我们大家都知道是Microsoft公司的数据库服务,当然说到数据库,现在主要分为三大商:1:Oracle.2:Msql Server.3:Mysql:三种数据库在当下环境受到不了不同程度的关注:比如oracle主要应用到大型的商业比较多,比如银行:SQL Server主要在常见的互联网公司使用:mysql主要应用于小型的企业或者服务商使用:当然从费用上来说,Oracle是最贵的,也是最为稳