iBatis for net 框架使用
简介:ibatis 一词来源于“internet”和“abatis”的组合,是一个由Clinton Begin在2001年发起的开放源代码项目,到后面发展的版本叫MyBatis但都是指的同一个东西。最初侧重于密码软件的开发,现在是一个基于Java的持久层框架,渐渐的也把这种模式转移到了net。相对NHibernate等“一站式”ORM解决方案而言,ibatis 是一种“半自动化”的ORM实现。
下载地址:http://code.google.com/p/mybatisnet/downloads/list?can=3
本文开发Demo环境:IBatis.DataMapper.1.6.2.bin + MsSql 2005 + Vs 2010
使用步骤:
在使用之前,为大家推荐一款代码生成器,也是我专为此框架写的一款代码生成器,生成iBatis的Map配置文件,这样一来,用户不用开任何关于框架的说明文档,即可使用此框架。代码生成器(CodeHelper)下载地址与说明:
http://www.cnblogs.com/stone_w/archive/2011/09/26/2192010.html
第一步:创建数据库与新建网站项目。
创建数据库与表的T-sql:
/*
* iBatisDemo Sql
* Stone (QQ:1370569)
* Date:2011.09.26
*/
create database OrmDB
go
use OrmDB
go
create table People
(
id int primary key identity,
[name] varchar(250),
age int
)
go
打开vs开发工具,新建网站项目。
第二步:为网站添加iBatis框架支持。
为网站添加引用或者直接把下载的iBatis框架中的IBatisNet.Common.dll和IBatisNet.DataMapper.dll复制到Bin目录下。
第三步:添加iBatis配置文件。
iBatis的配置文件只用三种,也必须要有这三种:
1.providers.config[文件名不能修改]此文件为数据库开发商提供的驱动配置集合,是固定不变的,无需修改与配置,复制文件到网站的根目录,代码如下:
2.SQLMap.config[文件名不可修改],配置连接数据库字符串与每个实体类(表)的映射文件配置,复制文件到网站的根目录,代码如下:
<?xml version="1.0" encoding="utf-8"?>
<sqlMapConfig
xmlns="http://ibatis.apache.org/dataMapper"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<settings>
<!--/是否使用Satement命名空间,这里的命名空间指的是映射文件中sqlMap节点的namespace属性,默认是false-->
<setting useStatementNamespaces="false"/>
<!--是否启用DataMapper的缓存机制,针对全部的SqlMap,默认是true-->
<setting cacheModelsEnabled="true"/>
<!--是否启用SqlMapConfig.xsd schema验证映射文件,默认是false-->
<setting validateSqlMap="false"/>
</settings>
<!--配置数据驱动提供类配置文件的路径和文件名-->
<providers resource="providers.config"/>
<!--如果在providers.config文件中指定了默认的数据库驱动,那么provider节点就不需要设置了,它的作用是在换数据库驱动时不需要修改providers.config文件。datasource节点用于指定ADO.NET Connection String.-->
<database>
<provider name="sqlServer2.0"/>
<dataSource name="mydb" connectionString="data source=127.0.0.1;database=MyBatisDB;user id=sa;password=sa;"/>
</database>
<!--指定映射的文件的位置-->
<sqlMaps>
<sqlMap resource="Maps/PeopleMap.xml"/>
</sqlMaps>
</sqlMapConfig>
3.每个实体类(表)都有一个单独的配置文件类,类型为xml。代码生成器也是生成这个类的,这样一来,用户就可以几秒钟创建开发一个iBatis项目了,实体类的配置文件格式如下,在网站的根目录创建一个Map的文件夹,新建xxxMap.xml格式的配置类,比如:PeopleMap.xml文件,示例代码如下:
<?xml version="1.0" encoding="utf-8" ?>
<!--namespace必须用否者就报错(读取配置文件报:未将对象引用设置到对象的实例)-->
<sqlMap namespace="" xmlns="http://ibatis.apache.org/mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<statements>
<select id="GetPeopleById" parameterClass="string" resultClass="HashTable">
SELECT * FROM People WHERE Id=#Id#
</select>
<insert id="Add" parameterClass="hashtable">
INSERT dbo.People (name ,age)
VALUES (#Name# , #Age#)
</insert>
<delete id="Delete" parameterClass="int" restultClass="int">
DELETE FROM dbo.People WHERE Id=#Id#
</delete>
<update id="Update" parameterClass="hashtable" restltClass="int">
UPDATE People SET name=#Name# WHERE Id=#Id#
</update>
<select id="GetAll" resultClass="HashTable">
SELECT * FROM People
</select>
</statements>
</sqlMap>
这三类配置文件必须都要有,与其他orm框架不同的是,web.config什么也不用配置,及时练数据库连接字符串也不是在它的文件中配置的,也就是web.config是没有被用到的。
第四步:iBatis框架语法与使用。
使用之前先来加入一个DB辅助类IBatisHepler.cs,代码如下:
使用语法如下:
// 添加引用
using System.Collections;
using IBatisNet.DataMapper;
using IBatisNet.DataMapper.Configuration;
// 1.添加
Hashtable ht_add = new Hashtable();
ht_add["Name"] = "IBatis"; // [注意]大小写要和xxxMap.xml里保持一致
ht_add["Age"] = 2001;
IBatisHepler.ExcuteInsert("Add", ht_add);
// 2.修改
Hashtable ht_up = new Hashtable();
ht_up["Id"] = "1";
ht_up["Name"] = "IBatis";
ht_up["Age"] = 2001;
IBatisHepler.ExcuteUpdate("Update", ht_up);
// 3.删除
IBatisHepler.ExcuteDelete("Delete", 14);
// 4.查询
Repeater1.DataSource = IBatisHepler.ExcuteSelectObj("GetPeopleById", "1");
Repeater1.DataBind();
我对此框架的评价:配置文件有点多,用户需要去写东西比较多,调用查询不是很好用,尤其是条件查询很不方便。
最新文章
- silverlight中 Storyboard(动画)的使用,实现球的上下循环移动,左右移动,及旋转功能
- Javascript的精华啊【如果以后我看到了或者想到了再继续补吧】
- iOS KVC valueForKeyPath学习心得
- poj 2195 二分图带权匹配+最小费用最大流
- Using dbms_shared_pool.purge to remove a single task from the library cache
- C#数字千分位问题
- 从零开始学ios开发(十二):Table Views(中)UITableViewCell定制
- XQuery FLWOR 表达式
- 关于left join连接查询 两张表里有同名字段的问题
- linux进程解析--进程的创建
- python基本数据类型——set
- Revit二次开发封装族的替代方法
- 使用Apache JMeter对SQL Server、Mysql、Oracle压力测试(三)
- nginx搭建分布式简单配置
- linux git pull/push时提示输入账号密码之免除设置
- Django 认证
- Luogu P1477 [NOI2008]假面舞会
- Redhat ssh服务登录慢
- [HNOI2013]比赛 (用Hash实现记忆化搜索)
- 机器学习入门-数值特征-数字映射和one-hot编码 1.LabelEncoder(进行数据自编码) 2.map(进行字典的数字编码映射) 3.OnehotEncoder(进行one-hot编码) 4.pd.get_dummies(直接对特征进行one-hot编码)
热门文章
- CodeForces - 505B Mr. Kitayuta&#39;s Colorful Graph 二维并查集
- Sharepoint2013搜索学习笔记之设置sharepoint网站内容源(五)
- GROUP BY 子句 和 ORDER BY子句连用注意
- Unity 5.6 beta版本新特性
- Mac 下nginx 环境的配置
- jsp学习与提高(一)——JSP生命周期、三大指令及动作
- Nacos深入浅出(三)
- 2017EIS高校运维大赛ctf wirteup
- 使用CSS3的translate和transition功能,控制一个两个div块的联动
- mirror与repository的关系