my ibatis学习

首先HiberanteiBatis,MyBatis都是对数据访问的封装,最终都是生成sql语句访问数据库。
只不过Hibernate封装得比较全面,IBatis只是局部封装,懂Jdbc的程序员可以快速上手,而myBatis是近来流行的一种新的IBatis是对IBatis的升级,可以看着是升级版。

一般来讲,下述情况比较适合选择OR/M工具:

(1)对数据库有完全的控制。

(2)团队中没有数据库管理员;

(3)需要把数据库之外的问题域看做一个对表格;

        而在下属情况,比较适合选择iBATIS:

(1)对数据库没有完全的控制,或者需要在数据库重构之后能够当做原来的数据库,继续合法访问这个它

(2)团队中有数据库管理员;

(3)数据库用于模拟问题域,应用程序的主要功能是帮助用户使用数据库模型。


简单MyIBatisDemo

1.添加引用:Castle.DynamicProxy.dll、IBatisNet.Common.dll、IBatisNet.Common.Logging.Log4Net.dll、IBatisNet.DataMapper.dll

   到官网http://code.google.com/p/mybatisnet/ 下载相关dll和文档

2.Web项目根目录下添加Providers.config

<?xml version="1.0" encoding="utf-8"?>
<providers
xmlns="http://ibatis.apache.org/providers"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

  <clear/>
  <provider
          name="sqlServer2.0"
          enabled="true"
          description="Microsoft SQL Server 2005, provider V2.0.50215.0 in framework .NET V2.0"
          assemblyName="System.Data, Version=2.0.50215.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
          connectionClass="System.Data.SqlClient.SqlConnection"
          commandClass="System.Data.SqlClient.SqlCommand"
          parameterClass="System.Data.SqlClient.SqlParameter"
          parameterDbTypeClass="System.Data.SqlDbType"
          parameterDbTypeProperty="SqlDbType"
          dataAdapterClass="System.Data.SqlClient.SqlDataAdapter"
          commandBuilderClass=" System.Data.SqlClient.SqlCommandBuilder"
          usePositionalParameters = "false"
          useParameterPrefixInSql = "true"
          useParameterPrefixInParameter = "true"
          parameterPrefix="@"
        />
</providers>

3.Web项目根目录下添加SqlMap.config,它的作用主要是指定db连接串,告诉系统providers.config在哪? 以及db与entity的映射文件在哪?(映射文件后面会讲到,这里先不管)
<?xml version="1.0" encoding="utf-8"?>
<sqlMapConfig xmlns="http://ibatis.apache.org/dataMapper" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

  <!--BAsic Setting About Configuration-->
  <settings>
    <setting useStatementNamespaces="false"/>
    <setting cacheModelsEnabled="true"/>
    <setting validateSqlMap="false" />
  </settings>
  <providers embedded="Providers.config,MyIbatisDemo_UI"/>
  <!--<providers resource="providers.config"/>-->
  <!--DataBase Connection Configuration-->
  <database>
    <provider name="sqlServer2.0" />
    <dataSource name="sqlserver" connectionString="Data Source=GSHC-LIUHX\SQLSERVER;Initial Catalog=BaseCardDB2;Integrated Security=True" />
  </database>
  <sqlMaps>
    <!--<sqlMap resource="ProductMap.xml"/>-->
    <sqlMap  embedded="ProductMap.xml,MyIbatisDemo_UI" />
  </sqlMaps>
</sqlMapConfig>

4.数据库中添加数据库 并添加product表

5.项目中EntityModelModel添加product实体

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace EntityModel
{
    public class Product
    {

        public int ProductId { get; set; }

        public string ProductName { get; set; }

        public string ProductCompany { get; set; }

        public DateTime SignDate { get; set; }

        public DateTime UpdateData { get; set; }

    }
}

6.BLL中新增Service

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using EntityModel;
using IBatisNet.DataMapper;
using IBatisNet.DataMapper.Configuration;

namespace MyIbatisDemo_BL
{
    public class ProductService
    {
        public void InsertProduct(Product getproduct)
        {

            ISqlMapper _getsqlManager = null;

            DomSqlMapBuilder getdombuilder = new DomSqlMapBuilder();



            if (getdombuilder != null)

                _getsqlManager = getdombuilder.Configure("SqlMap.config") as SqlMapper;

             _getsqlManager = Mapper.Instance();



            if (_getsqlManager != null)

                _getsqlManager.Insert("InsertProduct", getproduct);

        }
    }
}

7.添加映射文件ProductMap.xml:

<?xml version="1.0" encoding="utf-8" ?>
<sqlMap namespace = "EntityModel" xmlns="http://ibatis.apache.org/mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <statements>
    <select id="GetAllProducts" parameterClass="string" resultClass="hashtable">
      SELECT * FROM Product WHERE Product_Company = #companyname#
    </select>
    <insert id="InsertProduct" parameterClass="EntityModel.Product">
      INSERT  dbo.Product ( Product_Name ,Product_Company)
      VALUES  (#ProductName# , #ProductCompany#)
    </insert>
    <delete id="DeleteProduct" parameterClass="int" restultClass="int">
      DELETE FROM dbo.Product WHERE ProductID=#ProductId#
    </delete>
    <update id="UpdateProduct" parameterClass="EntityModel.Product" restltClass="int">
      UPDATE Product SET Product_Name=#ProductName# WHERE ProductID=#ProductId#
    </update>
    <select id="SelectAllProduct" resultClass="List">
      SELECT * FROM Product
    </select>
  </statements>
</sqlMap>

5.前端新建页面 testWeb.aspx ->调用服务


项目结构总览:


http://www.cnblogs.com/yjmyzz/p/3362343.html

demo中只做了insert ,More Operation :http://noasoso.iteye.com/blog/1128635


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值