`
maplye
  • 浏览: 114622 次
  • 来自: ...
社区版块
存档分类
最新评论

IBatisNet系列二-QuickStart篇

    博客分类:
  • .NET
阅读更多

本节我参考官方网站上的Quick Start Guide,网址:
http://opensource2.atlassian.com/confluence/oss/display/IBATIS/Quick+Start+Guide

我会跟着该例子创建一个实例代码.

补充以下,IBatisNet包括两个部分Data Mapper和DataAccess,这个实例主要针对 Data Mapper的.

1.在我们MSSQL中建立表如下:

create database IBatisDemo go use IBatisDemo if exists(select * from sysobjects where type='u' and name='Person') drop table dbo.Person go create table dbo.Person ( PER_ID int not null, PER_FIRST_NAME varchar(20) null, PER_LAST_NAME varchar(20) null, PER_BIRTH_DATE smalldatetime null, PER_WEIGHT_KG decimal null, PER_HEIGHT_M decimal null, primary key(PER_ID) )

2.使用VS2003创建WebProject,名称为WebIBatis(注意大小写)

3.在项目目录下建立lib目录,复制IBatisNet必需的dll,如下:
IBatisNet.Common.dll
IBatisNet.DataMapper.dll
IBatisNet.DataAccess.dll
log4net.dll
Castle.DynamicProxy.dll
并在项目中添加这些dll的引用

4.创建模型对象
在项目中创建目录 Model,并在该目录下创建Person类文件

using System; namespace WebIBatis.Model { /// /// Person 的摘要说明。 /// public class Person { private int _Id; public int Id { get { return _Id; } set { _Id = value; } } private string _FirstName; public string FirstName { get { return _FirstName; } set { _FirstName = value; } } private string _LastName; public string LastName { get { return _LastName; } set { _LastName = value; } } private DateTime _BirthDate; public DateTime BirthDate { get { return _BirthDate; } set { _BirthDate = value; } } private decimal _WeightInKilograms; public decimal WeightInKilograms { get { return _WeightInKilograms; } set { _WeightInKilograms = value; } } private decimal _HeightInMeters; public decimal HeightInMeters { get { return _HeightInMeters; } set { _HeightInMeters = value; } } } }


这个类就是对Person的一个描述,只包含一些属性,这就是这个系统的数据的载体

4.定义实体定义的XML
在项目目录下建Maps目录下,在该目录下建立Person.xml

xml version="1.0" encoding="utf-8" ?> <sqlMap namespace="Person" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="SqlMap.xsd"> XML "behind" document for the People service class. --> <alias> <typeAlias alias="Person" type="WebIBatis.Model.Person, WebIBatis" /> alias> <resultMaps> <resultMap id="SelectResult" class="Person"> <result property="Id" column="PER_ID" /> <result property="FirstName" column="PER_FIRST_NAME" /> <result property="LastName" column="PER_LAST_NAME" /> <result property="BirthDate" column="PER_BIRTH_DATE" /> <result property="WeightInKilograms" column="PER_WEIGHT_KG" /> <result property="HeightInMeters" column="PER_HEIGHT_M" /> resultMap> resultMaps> <statements> <select id="Select" parameterClass="int" resultMap="SelectResult"> select PER_ID, PER_FIRST_NAME, PER_LAST_NAME, PER_BIRTH_DATE, PER_WEIGHT_KG, PER_HEIGHT_M from PERSON <dynamic prepend="WHERE"> <isParameterPresent> PER_ID = #value# isParameterPresent> dynamic> select> <insert id="Insert" parameterClass="Person" resultClass="int"> insert into PERSON (PER_ID, PER_FIRST_NAME, PER_LAST_NAME, PER_BIRTH_DATE, PER_WEIGHT_KG, PER_HEIGHT_M) values (#Id#, #FirstName#, #LastName#, #BirthDate#, #WeightInKilograms#, #HeightInMeters#) insert> <update id="Update" parameterClass="Person" resultClass="int"> update PERSON set PER_FIRST_NAME = #FirstName#, PER_LAST_NAME = #LastName#, PER_BIRTH_DATE = #BirthDate#, PER_WEIGHT_KG = #WeightInKilograms#, PER_HEIGHT_M = #HeightInMeters# where PER_ID = #Id# update> <delete id="Delete" parameterClass="int" resultClass="int"> delete from PERSON where PER_ID = #value# delete> statements> sqlMap>

 

<typeAlias alias="Person" type="WebIBatis.Model.Person, WebIBatis" />表示为WebIBatis.Model.Person取了个别名,这样在下面的class=别名就可以了
resultMap 是数据库字段和Person的类的对应关系,也是SQL语句操作的结果的载体,其作用就是,SQL语句操作返回的数据的值根据这个resultMap的定义,将相应的字段的值赋给Person类对应的属性.

5.定义数据连接
在项目根目录下定义sqlmap.config

xml version="1.0" encoding="UTF-8" ?> <sqlMapConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="SqlMapConfig.xsd"> <settings> <setting useStatementNamespaces="false"/> <setting cacheModelsEnabled="true"/> settings> <database> <provider name="sqlServer1.1"/> <dataSource name="iBatisTutorial" connectionString="server=.;User ID=sa;Password=;database=IBatisDemo;
Connection Reset=FALSE"
/> database> <sqlMaps> <sqlMap resource="Maps/Person.xml"/> sqlMaps> sqlMapConfig>

并拷贝providers.config文件到根目录,该文件定义各种数据库的驱动,包括SqlServer, Oracle, MySQL, PostgreSQL, DB2 and OLEDB, ODBC

 

 

6.定义Mapper
在根目录下创建Mapper类,该类是得到单一的SqlMapper对象

using IBatisNet.Common.Utilities; using IBatisNet.DataMapper; namespace WebIBatis { /// /// Mapper 的摘要说明。 /// public class Mapper { private static volatile SqlMapper _mapper = null; protected static void Configure (object obj) { _mapper = (SqlMapper) obj; } protected static void InitMapper() { ConfigureHandler handler = new ConfigureHandler (Configure); _mapper = SqlMapper.ConfigureAndWatch (handler); } public static SqlMapper Instance() { if (_mapper == null) { lock (typeof (SqlMapper)) { if (_mapper == null) // double-check InitMapper(); } } return _mapper; } public static SqlMapper Get() { return Instance(); } } }

 

7.取数据
在Webform1.aspx窗体添加一DataGrid,在后置代码的Page_Load中添加代码如下:

IList list = Mapper.Instance().QueryForList("Select",null); DataGrid1.DataSource = list; DataGrid1.DataBind();

其中Select是在Person中定义的statements

8.其他操作的写法

//添加 Person newperson = new Person(); //给person赋值 newperson.FirstName = ""; //.... Mapper.Instance().Insert("Insert",newperson); //查看明细和修改 //根据ID得到明细 int id = 1; //得到Person对象 Person person = Mapper.Instance().QueryForObject("Select",id) as Person; //修改person的值 person.LastName = "国荣"; Mapper.Instance().Update("Update",person);

 实例附件下载:/Files/maplye/WebIBatis.rar

分享到:
评论

相关推荐

    ibatisnet 1-6篇(全)教程.rar

    【标题】:“iBatisNet 1-6篇(全)教程.rar” 是一个压缩包,其中包含了关于iBatisNet的完整系列教程。iBatisNet是一个数据访问层框架,它将SQL映射功能引入.NET平台,为.NET开发者提供了灵活的数据库操作方式。 ...

    IBatisNet-执行存储过程

    根据提供的信息,我们可以深入探讨如何在IBatisNet中执行存储过程。这涉及到多个方面的内容,包括配置文件(如XML映射文件)的设置、参数传递的方式以及如何在C#代码中调用这些存储过程。 ### IBatisNet简介 ...

    IBatisNet-源代码

    **IBatisNet 源代码分析** IBatisNet 是一个基于 .NET 平台的对象关系映射(ORM)框架,它允许开发人员将数据库访问层与业务逻辑层解耦,提高开发效率和代码可维护性。这个源码库提供了一个深入理解 IBatisNet 内部...

    IBatisNet-执行存储过程-mysql 请点击分页按钮

    本文将详细介绍如何在.NET环境中,利用IBatisNet框架来执行MySQL数据库中的存储过程,并实现分页查询功能。 首先,让我们了解IBatisNet。IBatisNet是一个轻量级的ORM(对象关系映射)框架,它允许开发者将SQL语句与...

    IbatisNet的介绍和使用 - 电子商务创业的日志 - 网易博客.mht

    IbatisNet的介绍和使用 - 电子商务创业的日志 - 网易博客,IbatisNet的介绍和使用 - 电子商务创业的日志 - 网易博客IbatisNet的介绍和使用 - 电子商务创业的日志 - 网易博客

    IbatisNet项目实例.rar

    iBATISNet Database Layer!这个框架将让你能够更好的在dotnet应用中设计和实现实体层。这个框架有两个主要的组成部分,一个是SQL Maps,另一个是Data Access Objects。下面是一个简单的iBATISNet应用架构。 项目中...

    IBatisNet和NHibernate模版

    5. **第二级缓存**:支持多种缓存策略,提升应用程序性能。 **优缺点:** - **优点:**强大的对象关系映射能力,自动化程度高,节省开发时间。 - **缺点:**学习曲线较陡峭,对内存使用和性能的影响需要谨慎评估。 ...

    iBatisNet入门示例源码

    iBatisNet是一款基于.NET平台的持久层框架,它提供了SQL映射功能,将数据库操作与业务逻辑分离,便于开发人员进行数据库访问。本入门示例源码将帮助你了解如何在C#项目中集成并使用iBatisNet。 1. iBatisNet基本...

    IBatisNet开发使用帮助文档

    - 添加IBatisNet所需的DLL引用,如IBatisNet.Common.dll、IBatisNet.DataMapper.dll和IBatisNet.DataAccess.dll。 - 添加配置文件:SqlMap.config是必需的,它定义了IBatisNet的全局设置和数据库映射;providers....

    ibatisnet教程全文

    IbatisNet是一个基于.NET平台的轻量级持久层框架,它提供了一种简单但强大的对象关系映射(ORM)解决方案,使得开发者可以将数据库操作与业务逻辑分离,从而提高开发效率和代码质量。本教程旨在全面讲解IbatisNet的...

    IBatisNet 框架 项目实例

    **二、IBatisNet 简介** 1. **架构设计**:IBatisNet基于.NET Framework,其核心设计理念是“SQL Map”,它将SQL语句与Java(或.NET)代码分离,通过XML配置文件或者注解来管理SQL和结果映射,实现了数据访问层(DAL...

    IbatisNet从入门到精通(由源码详细介绍)

    IBatisNet是一个面向.NET平台的对象关系映射(ORM)框架,它的主要功能是将数据库操作与业务逻辑解耦,使得开发者可以使用简单的XML映射文件来定义SQL语句与对象之间的关系。通过这种方式,开发人员可以专注于编写...

    iBatisNet+SQLlite DEMO

    iBatisNet是一款基于.NET平台的轻量级持久层框架,它将数据库操作与业务逻辑解耦,使得开发者可以更加专注于业务代码的编写。而SQLite则是一个无服务器、零配置、事务性的SQL数据库引擎,特别适合于移动设备或嵌入式...

    ibatisnet下载

    3. **缓存机制**:支持第一级和第二级缓存,提高数据读取性能,减少对数据库的频繁访问。 4. **事务管理**:提供事务控制功能,可以在代码中手动管理或者自动管理事务。 5. **动态SQL**:允许在XML映射文件中编写...

    IBatisNet 框架

    **IBatisNet 框架详解** IBatisNet是一个基于.NET平台的轻量级对象关系映射(ORM)框架,它的出现旨在简化.NET开发者与数据库之间的交互,减轻编写SQL语句和管理数据访问层的负担。这个框架允许程序员将注意力集中...

    IBatisNet源代码

    开发者可以配置不同级别的缓存,例如,本地缓存和二级缓存。 8. **扩展性**: IBatisNet的架构设计使得它易于扩展,比如可以添加自定义的类型处理器、拦截器等,以满足特定项目需求。 **源代码分析** 通过研究...

    MonoRail+IBatisNet +Velocity

    MonoRail、IBatisNet 和 Velocity 是三个在C#开发中常用的技术框架,它们分别用于不同的领域,但在实际项目中常被结合使用以构建高效、灵活的Web应用。下面将详细介绍这三个技术及其组合使用的要点。 **MonoRail** ...

Global site tag (gtag.js) - Google Analytics