`

IBatis详细使用例子

阅读更多
IBatis详细使用例子

1、认识配置文件

SqlMap.config:

<!--DWLayoutTable-->
<?xmlversion="1.0"encoding="utf-8"?>
<sqlMapConfigxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="SqlMapConfig.xsd">
<!--以上为固定格式,从这里开始以下是用户配置项 -->
<propertiesresource="DataBase.config"/><!-- 指定一个属性源,相当与设置一些属性变量,该文件请查看下面 -->
<settings>
<!-- 当该选项为true时,你在调用指定的映射时你总是必须给出完整的名称例如:queryForObject(“Namespace.statement.Id”); -->
<settinguseStatementNamespaces="false"/>
<!-- 该选项指示是否使用缓存,默认为true -->
<settingcacheModelsEnabled="true"/>
</settings>
<!--指定数据源
${datasource}${database}${userid}${password} DataBase.config定义的值
-->
<database>
<providername="sqlServer1.1"/>
<dataSourcename="mydb"connectionString="data source=${datasource};database=${database};user id=${userid};password=${password};min pool size=1; max pool size=50"/>
</database>
<!--指定映射的文件的位置 -->
<sqlMaps>
<sqlMapresource="xml/ItemList.xml"/>
<sqlMapresource="xml/XiangMuBiao.xml"/>
</sqlMaps>
</sqlMapConfig>

说明:该文件为IBatis.net默认的配置文件,不能缺少,当然可以不必是Sql.config,但是如果改为其他的名字的话需要在前台代码中说明,请参考下面的内容
providers.config:该文件必须存在,并且不能改变它的文件名,该文件描述了如何连接数据库,无须配置
DataBase.config:自定义配置文件
<!--DWLayoutTable-->
<?xmlversion="1.0"encoding="utf-8"?>
<settings>
<!-- 定义4个属性,在SqlMap.config中调用 -->
<addkey="userid"value="sa"/>
<addkey="password"value="123456"/>
<addkey="database"value="TouPiao"/>
<addkey="datasource"value="(local)"/>
</settings>
<!--DWLayoutTable-->
2、使用IBatis之映射XML文件
假设将数据库中名为ItemList的表映射到Asp.Net中的ItemList类,那么XML映射文件如下(映射文件的文件的说明请查看注释说明)
<!--DWLayoutTable-->
<?xmlversion="1.0"encoding="utf-8"?>
<sqlMapnamespace="ItemList"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="SqlMap.xsd">
<alias><!-- alias:取别名
assembly:表示类所在的文件
type:表示该类的完整的名称
-->
<typeAliasalias="ItemList"assembly="TouPiao.dll"type="TouPiao.DataAccess.ItemList"/>
<typeAliasalias="XiangMuBiao"assembly="TouPiao.dll"type="TouPiao.DataAccess.XiangMuBiao"/>
</alias>
<!--
resultMaps:
resultMaps用于返回值时进行ORM
resultMap:
其中每个resultMap对应一个ORM
id:表示名称
class:表示对应的类的别名根据<alias>标签中的定义
result:
property表示类中的属性
column表示数据库中对应的字段
-->
<resultMaps>
<resultMapid="ItemResult"class="ItemList">
<resultproperty="ID"column="ID"/>
<resultproperty="ItemText"column="ItemText"nullValue="没有选项"/>
<resultproperty="pID"column="pID"/>
<resultproperty="tCount"column="tCount"nullValue="-1"/>
</resultMap>
</resultMaps>
<!--
parameterMap:
id:表示名称,不能少
其他的参数可以不写,例如 class
parameter:
property:表示类中的属性,不能少,并且应用在存储过程中的时候,必须按照参数的位置
其他参数可以省略:
column:数据库中的字段
direction:参数的传递方式 Input|Output|InputOutput
dbType:数据库中的字段的类型
type:类的属性的类型,可能要写成CLR形式,例如int类型应该写成System.Int32
nullValue:空值转换,将空值转换成指定的值,以便防止某些类型不支持NULL的类型出错,例如int double等,注意:
1.只能转换成与property类型相一致的值
2.空不代表"",而是NULL
3.当该属性的类型匹配一个代替空值的值的时候(例如:-9999),更新字段的时候,空值将代替这个值被写入数据库,即nullValue指定的值不被写入数据库
size:数据库中字段的大小,设置字段中的数据的最大值
precision:数据库中字段的精度,设置当该字段映射到类的对应的属性时的精度
-->
<parameterMaps>
<parameterMapid="AddNewItemParam"><!--AddNewItem的参数列表-->
<parameterproperty="ItemText"/>
<patameterproperty="pID"/>
</parameterMap>
<!--DelItem参数列表 -->
<parameterMapid="DelItemMap">
<parameterproperty="value"/>
</parameterMap>
<parameterMapid="UpdateItemMap">
<parameterproperty="ID"column="ID"/>
<parameterproperty="ItemText"column="ItemText"/>
<parameterproperty="tCount"column="tCount"/>
</parameterMap>
<parameterMapid="AddItemCountMap">
<parameterproperty="value"/>
</parameterMap>
<patameterMapid="AddNewXiangMuMap">
<parameterproperty="Title"/>
<patameterproperty="IsMul"/>
</patameterMap>
</parameterMaps>
<!--
statements:语句的集合
<statement>标签可以替代<select>,<procedure> ,<delete>,<update>,<insert>,并且可以通过SqlMapper的delete update insert方法以及所有关于查询的方法执行
<select>:可以通过SqlMapper的所有关于查询的方法执行
<delete> <insert> <update>:可以通过SqlMapper的 delete update insert方法执行
<delete> <insert> <update> <statement> <select> <procedure>:
id:该语句的标识
resultMap:只有<select> <statement>才有,用于将结果映射到相应的字段,该属性不能少
parameterMap:用于<procedure>的时候不能缺少,并且对应的parameterMap的<parameter>的property的顺序必须和存储过程的参数的顺序一致
parameterClass:可以省略,将使用调用时传进来的类型进行调用
注意:
<select id="GetItemsByID" resultMap="ItemResult">
select * from ItemList where pID=#ID#
</select>
当调用时使用
sqlMapper.QueryForList("GetItemByID",1) //这时候#ID#的直就是1
sqlMapper.QueryForList("GetItemByUD",ItemClass) //假设ItemClass包含一个ID字段,和name字段,那么这时候#ID#的值就是ItemClass.ID的值
-->
<statements>
<!-- 使用Sql语句,通过项目ID获得该项目的所有选项
注意:
该标签没有指定parameterMap或者parameterClass,将根据前台调用时指定的对象作为参数,如果前台传进来的是一个原始对象例如:int string 等那么#ID#就是
该参数的值
如果传进来的是一个类的对象,假设该类包含两个属性(name,ID)
那么#ID#就代表该对象的ID属性,由于name属性没有被用到,因此被忽略
如果需要传进两个参数(不是某个对象的属性),那么必须将包含这两个键值的Hashtable对象作为参数传进来
-->
<selectid="GetItemsByID" resultMap="ItemResult">
select * from ItemList where pID=#ID#
</select>
<selectid="GetItemsByIDAndDate" resultMap="ItemResult">
select * from ItemList where pID=#ID# and isvis=#ISVIS#
</select>
<!--调用一个存储过程,增加一个选项 存储过程必须指定 parameterMap,如果有返回值的话必须指定 resultMap-->
<procedureid="AddNewItem"parameterMap="AddNewItemParam">
AddNewItem
</procedure>
<!--调用一个存储过程,删除一个选项 -->
<procedureid="DelItem"parameterMap="DelItemMap">
DelItem
</procedure>
<!--调用一个存储过程,更新一个选项 -->
<procedureid="UpdateItem"parameterMap="UpdateItemMap">
UpdateItem
</procedure>
<!--调用一个存储过程,更新一个选项的值 -->
<procedureid="AddItemCount"parameterMap="AddItemCountMap">
AddItemCount
</procedure>
</statements>
</sqlMap>
3、开始使用IBatis.net
<!--DWLayoutTable-->
//GetSqlMapper.cs
using System;
using IBatisNet.DataMapper;
using IBatisNet.DataMapper.Configuration;
namespace TouPiao.DataAccess
{
///<summary>
/// 该类返回一个SqlMapper一个SqlMapper对应一个SqlMap.config配置文件
///</summary>
public class GetSqlMapper
{
publicSqlMapper GetMapper()
{
DomSqlMapBuilder d=new DomSqlMapBuilder();//初始化一个DomSqlMapBuilder
SqlMapper sm=d.Configure("SqlMap.config");//调用Configure方法并指定配置文件的名称,返回一个SqlMapper
//SqlMapper sm=Mapper.Get();
//SqlMapper sm=Mapper.Instance();
return sm;
}
}
}
//Mapper.Get()方法与Mapper.Instance()类似,该方法将调用默认的Sql.config文件建立SqlMapper
//与使用DomSqlMapBuilder类的区别是,Mapper.Get(建立的SqlMapper每次都要先分析映射的XML文件,性能将大大的降低)不需要指定配置文件的名称,并且使用Mapper.Get()返回SqlMapper后如果映射的XML没有错误的话,会将该XML文件缓存到内存,下次调用的时候就不需要在检查XML文件,直到SqlMap.config被改变,这样将大大的提高了程序的性能,而使用DomSqlMapBuilder
<!--DWLayoutTable-->
//ItemList.cs 该文件定义了ItemList,该文件的属性和数据库中的字段相对应
namespace TouPiao.DataAccess
{
using System;
public class ItemList
{
Int32 _ID;
String _ItemText;
Int32 _pID;
Int32 _tCount;
public Int32 ID
{
get{return this._ID;}
set{this._ID=value;}
}
public String ItemText
{
get{return this._ItemText;}
set{this._ItemText=value;}
}
public Int32 pID
{
get{return this._pID;}
set{this._pID=value;}
}
public Int32 tCount
{
get{return this._tCount;}
set{this._tCount=value;}
}
}
}
<!--DWLayoutTable-->
//这个类调用IBatis来存取数据
using
System;
using TouPiao.DataAccess;
using TouPiao;
using System.Collections;
using IBatisNet.DataMapper;
using IBatisNet.DataMapper.Configuration;
namespace TouPiao.Model
{
///<summary>
///投票类
///</summary>
public class TouPiaoClass
{
SqlMapper sm=null;
public TouPiaoClass()
{
sm=new GetSqlMapper().GetMapper();
}
public IList GetItemsByID(int ID){
return sm.QueryForList("GetItemsByID",ID);
}
///<summary>
///增加一个新的选项
///</summary>
///<param name="pID">所属项目ID</param>
///<param name="ItemText">选项文本</param>
public void AddNewItem(int pID,string ItemText)
{
ItemList il=new ItemList();
il.pID=pID;
il.ItemText=ItemText;
sm.Insert("AddNewItem",il);
}
///<summary>
///删除一个选项
///</summary>
///<param name="ID">选项ID</param>
public void DelItem(int ID){
sm.Delete("DelItem",ID);
}
///<summary>
///更新一个选项
///</summary>
///<param name="ID">选项ID</param>
///<param name="ItemText">选项文本</param>
///<param name="tCount">选项计数</param>
public void UpdateItem(int ID,string ItemText,int tCount){
ItemList il=new ItemList();
il.ID=ID;
il.ItemText=ItemText;
il.tCount=tCount;
sm.Update("UpdateItem",il);
}
///<summary>
///将指定的选项的计数加1
///</summary>
///<param name="al"><
分享到:
评论

相关推荐

    ibatis demo,ibatis例子,ibatis示例

    例如,使用`@Param`注解可以指定参数名,或者在XML中使用`#{paramName}`来引用参数。 6. **结果映射**:结果映射允许我们将查询结果自动映射到Java对象。Ibatis提供了多种方式来实现映射,如自动类型匹配、自定义...

    使用的iBatis 简单例子

    在这个“使用的iBatis简单例子”中,我们将深入探讨如何配置和使用iBatis进行数据库交互。 首先,iBatis的核心组件包括XML配置文件、SQL映射文件以及SqlSessionFactory。XML配置文件用于定义数据源、事务管理器等...

    一个Ibatis的详细例子

    通过这个详细的Ibatis案例,初学者可以了解并掌握如何在实际项目中运用Ibatis,从配置到实践,一步步体验数据库操作的便捷性。同时,通过阅读源码,还能深入理解Ibatis的工作原理,提升自己的编程技能。

    .net中使用iBATIS的小例子

    下面我们将详细探讨iBATIS在.NET中的使用方法,以及如何利用提供的文件进行实践。 首先,了解iBATIS的基本概念。iBATIS是一个轻量级框架,它的核心功能是动态SQL映射,允许开发者编写SQL语句并将其封装到XML配置...

    ibatis-缓存使用示例

    在IT行业中,数据库操作是应用程序开发的核心部分,而iBATIS作为一个流行的持久层框架,它为Java开发者提供了...通过"ibatis-缓存使用示例"的学习,开发者能更好地掌握这一技巧,从而在实际项目中发挥出更大的价值。

    ibatis系列 详细介绍

    《iBATIS-SqlMaps-2-Tutorial_cn.pdf》则是针对SqlMaps 2的中文教程,除了基本概念和使用方法,还可能包含更多示例和实践指导,帮助开发者快速上手。 通过阅读这三份文档,你将能够深入理解iBATIS的工作原理,掌握...

    ibatis2小例子(转)

    标题 "ibatis2小例子(转)" 指向的是一个关于iBatis2的实战教程或示例,这是一套广泛使用的Java持久层框架,它提供了SQL映射功能,使得开发者能够方便地将数据库操作与业务逻辑相结合。在这个小例子中,可能会涉及...

    JSF+iBATIS+MySQL示例代码

    目前网上罕见的JSF+iBATIS+MySQL示例代码,公司某软件项目所需而做的前期DEMO,只有两个Web页面,用户登录和用户列表,但已经能够说明JSF+iBATIS的典型应用方式。 MyEclipse6.5 项目工程文件,内含SQL建库指令。 ...

    ibatis 使用手册

    具体的内容需要打开文件查看,但根据命名推测,它们可能包含详细的教程、示例代码或者API参考。 总的来说,《iBatis 使用手册》是开发者学习和使用iBatis的重要参考资料,它覆盖了从基础到高级的所有内容,可以帮助...

    ibatis简单CRUD例子

    在Ibatis中,CRUD(Create, Read, Update, Delete)是数据库中最基本的操作,下面我们将详细介绍如何使用Ibatis实现这些操作。 1. **创建(Create)**:创建通常涉及到插入新的记录。在Ibatis中,我们定义一个Insert...

    ibatis2.3例子代码

    这个"ibatis2.3例子代码"是为了演示如何在实际项目中集成并使用iBatis进行数据操作。 首先,我们需要了解iBatis的核心概念。主要包括XML配置文件、SQL映射文件、SqlSession和Mapper接口。XML配置文件通常包含数据库...

    Ibatis入门例子,Ibatis教程

    以上就是一个简单的Ibatis入门例子,展示了如何使用Ibatis进行数据库查询。实际上,Ibatis还支持动态SQL、结果映射、参数映射等多种高级特性,可以实现更复杂的业务逻辑。例如,你可以通过使用`&lt;if&gt;`、`&lt;choose&gt;`等...

    Ibatis.net学习例子以及使用教程书

    本教程书旨在帮助开发者深入理解并熟练运用Ibatis.net,通过实例和详细讲解,使得学习过程更加简单易懂。 Ibatis.net的核心理念是SQL映射,它允许开发者编写自定义的SQL语句,避免了ORM(对象关系映射)工具通常...

    ibatis简易使用 ibatis简易使用 ibatis简易使用

    以下是对iBATIS简易使用的详细解释: 1. **环境准备**: - **jar文件**:iBATIS框架运行需要依赖一些库文件,包括`log4j`用于日志记录,`ibatis`核心库,以及`jdbc`驱动,这些都需要添加到项目的类路径中。 - **...

    ibatis中使用安全的拼接语句,动态查询,大于、小于、等于.doc

    本文将详细介绍 iBatis 中使用安全的拼接语句、动态查询、大于、小于、等于的知识点。 一、安全的拼接语句 在 iBatis 中,使用动态 SQL 可以生成安全的拼接语句,避免 SQL 注入攻击。例如,在上面的示例代码中,...

    maven整合ibatis的简单例子

    下面我们将详细探讨如何将Maven与iBatis整合,以实现一个简单的例子。 首先,我们需要创建一个新的Maven项目。在Maven的`pom.xml`文件中,我们需要添加iBatis和其依赖的数据库驱动(如MySQL驱动)作为项目的依赖。...

    ibatis学习完整实例,例子

    通过深入学习和实践"ibatistest2"这个实例,开发者不仅可以掌握Ibatis的基本使用,还能理解其在实际项目中的应用方式,为日后的开发工作打下坚实的基础。记住,理论与实践相结合,才能真正掌握一门技术,希望...

    Castle+ibatis代码示例

    学习这个示例,开发者可以了解到如何在.NET环境中结合使用Castle和iBATIS来构建高效、灵活的业务系统。这包括如何利用Castle Windsor管理对象生命周期,如何配置和使用事务管理设施,以及如何通过iBATIS进行数据库...

    IBatis框架简单例子

    自己写的ibatis例子,可以用来入门,也可以学习一下配置文件的配置方法,程序中对可以Student表进行增删改查,自己也可以根据需要添加新的方法,里面有源码和数据库脚本。有需要的,可以下过来看看。

    ibatis使用例子,源代码

    标题"ibatis使用例子,源代码"表明这是一个关于iBATIS(一个持久层框架)的实际应用示例,其中包含了可以运行的源代码。这可能是一个简单的项目,旨在帮助开发者理解如何在实际开发中使用iBATIS进行对象关系映射...

Global site tag (gtag.js) - Google Analytics