IbatisNet的介绍和使用
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的介绍和使用的更多相关文章
- IBatis.net介绍
IBatis.net介绍 IBatis.net 是2001年发起的开源项目,它是一个轻量级的ORM框架,现在IBatisNET已经是属于Apache下的一个子项目了,最新版本是1.6.2. 官方网站: ...
- iBatisnet系列(二) 配置运行环境和日志处理
http://hjf1223.cnblogs.com/archive/2006/04/24/383119.aspx 刚爬完鼓山回来,想到这篇刚刚开始,不敢怠慢,洗完澡休息一下就到电脑旁边来了.现在我开 ...
- IbatisNet开发使用小结
一. 介绍 平常做企业级应用,需求变化是经常的事,而很多基础代码重复也是很让人头疼的问题.所以很多人会使用一些ORM框架来增强项目的可维护性.可扩展性.IBatis.Net就是一个比较易用的ORM ...
- 跟初学者学习IbatisNet第四篇
这一章我们主要介绍一下IbatisNet里面的其它用法主要有以下几点: 1,如何得到运行时ibatis.net动态生成的SQL语句? 2,如何获取DbCommand? 3,如何返回DataTable, ...
- 跟初学者学习IbatisNet第三篇
这一章我们主要介绍一下IbatisNet里面的动态sql语句的运用,比如有时候我们想进行模糊查询,参数是动态加入的.或者要实现top n ,order by ,分页等功能的时候,我们就不得不用动态拼接 ...
- 跟初学者学习IbatisNet第二篇
在上一篇里面我们知道了什么是IbatisNet,并且知道了如何用IbatisNet进行简单的增删改查的操作,在这一篇文章里面我们主要介绍一下IbatisNet操作存储过程. 我们一般把存储过程分为两种 ...
- 跟初学者学习IbatisNet第一篇
写在前面的话:我自己也是一个初学者,写这个专题只是为了对学过知识的巩固,如果有什么不对的地方,欢迎大家指正…………………… 第一篇就简单介绍一下什么是IbatisNet,然后写一个简单的Demo,在后 ...
- CSS3 background-image背景图片相关介绍
这里将会介绍如何通过background-image设置背景图片,以及背景图片的平铺.拉伸.偏移.设置大小等操作. 1. 背景图片样式分类 CSS中设置元素背景图片及其背景图片样式的属性主要以下几个: ...
- MySQL高级知识- MySQL的架构介绍
[TOC] 1.MySQL 简介 概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一种关联数据库管理系统,将数据保存在不同的表中,而 ...
随机推荐
- C语言提供的位运算符
运算符 含义 描述 & 按位与 如果两个相应的二进制位都为1,则该位的结果值为1,否则为0 | 按位或 两个相应的二进制位中只要有一个为1,该位的结果值为1 ^ 按位异或 若参加运算的两个 ...
- 003医疗项目-关于<context:property-placeholder location="classpath:db.properties"/>的问题
项目结构如下:
- 课程2——变量修饰关键字
声明:本系列随笔主要用于记录c语言的常备知识点,不能保证所有知识正确性,欢迎大家阅读.学习.批评.指正!!你们的鼓励是我前进的动力.严禁用于私人目的.转载请注明出处:http://www.cnblog ...
- centos一键优化脚本
centos一键优化脚本:细节:http://oldboy.blog.51cto.com/2561410/1336488网络状态优化:http://oldboy.blog.51cto.com/2561 ...
- [win]AD域组策略wifi自动配置
http://wenku.baidu.com/link?url=MC950wliAZNeVUJ2M6Y1VTi5faqo7kG374fyBjW57r0qyLJkBZLg5ypiql4RFywQ8q7y ...
- android gravity属性 和 weight属性
来看这个布局文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:and ...
- C语言 百炼成钢16
//题目46:海滩上有一堆桃子,五只猴子来分.第一只猴子把这堆桃子凭据分为五份,多了一个,这只 //猴子把多的一个扔入海中,拿走了一份.第二只猴子把剩下的桃子又平均分成五份,又多了 //一个,它同样把 ...
- 第十章 系统级I/O
第十章 系统级I/O 一.Unix I/O 1.一个unix文件就是一个m个字节的序列 2.unix外壳创建的每个进程开始时都有三个打开的文件:标准输入(0) .标准输出(1)和标准错误(-1). 二 ...
- iOS——百度统计
百度移动统计(http://mtj.baidu.com)是一款专业的移动应用统计分析工具,支持ios和android平台.开发者可以方便地通过嵌入统计SDK,对移动应用进行全方位监测,实时监控产品表现 ...
- 数据挖掘系列(5)使用mahout做海量数据关联规则挖掘
上一篇介绍了用开源数据挖掘软件weka做关联规则挖掘,weka方便实用,但不能处理大数据集,因为内存放不下,给它再多的时间也是无用,因此需要进行分布式计算,mahout是一个基于hadoop的分布式数 ...