zoukankan      html  css  js  c++  java
  • 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[文件名不能修改]此文件为数据库开发商提供的驱动配置集合,是固定不变的,无需修改与配置,复制文件到网站的根目录,代码如下:

    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,代码如下:

    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();

    我对此框架的评价:配置文件有点多,用户需要去写东西比较多,调用查询不是很好用,尤其是条件查询很不方便。

  • 相关阅读:
    docker学习
    io性能调优之page cache
    ll命令执行后结果分析
    Angular2+ ViewChild & ViewChildren解析
    <router-outlet> 干什么用的?
    npm基本命令
    什么情况下会出现undefined
    关于VUE调用父实例($parent) 根实例 中的数据和方法
    vue中的this指向问题
    对 Foreach 的理解
  • 原文地址:https://www.cnblogs.com/wuyuxin/p/7002163.html
Copyright © 2011-2022 走看看