zoukankan      html  css  js  c++  java
  • Ibatis.Net 学习手记一 简单的Demo

    Ibatis.Net 学习手记  

        Wednesday, December 07, 2011

    最近在做游戏推广的需求,趁公司给了不少充足的时间...再一次看了下自己以前学过的IbatisDemo,同时拿出来分享一下

    Ibatis.Net的官方文档地址为 http://www.mybatis.org/dotnet.html  

    下面晒一下我简单的Demo代码 


     Demo 中引用Castle.DynamicProxy.dll

                       IbatisNet.Common.dll

                       IbatisNet.Common.Logging.Log4Net.dll

                       IbatisNet.DataMapper.dll

                       log4net. dll

    providers.config 是各类数据库mysql、sql server、Orcale的驱动配置文件,官方里面已经给出

    SqlMap.config 需要配置一下:

    <providers resource="providers.config" />  

    一看就知道是引用providers.config配置文件

     <database>
        <provider name="sqlServer2005"></provider>
        <dataSource name="IBatisNet"  connectionString="server=localhost;database=IBatisDB;user id=sa;password=123;connection reset=false;"/>
      </database>

    数据库方面的配置,也很容易知道不需要细讲

      <sqlMaps>
        <sqlMap resource="Person.xml" />
      </sqlMaps>
    将sql映射写到外部文件,其实可以直接在SqlMap.config里面写的,不过项目大的话不建议这么做。

     接下来是person.xml里面的配置了...其实就是映射一下属性跟数据库表, 里面有

    <?xml version="1.0" encoding="utf-8" ?>

    <sqlMap namespace="IBatisNetDemo" xmlns="http://ibatis.apache.org/mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >



      <alias>
        <typeAlias alias="Person" type="IBatisNetDemo.Person,IBatisNetDemo" />
      </alias>

      <statements>
        <select id="SelectAll" resultMap="SelectAllResult" >
          select
          Id,Name,Password
          from Person
        </select>
        <update id ="UpdatePerson" parameterClass="Person">
          Update Person
          set Name=#Name#
          where Password=#Password#
        </update>
        <select id="SelectByPassword" resultClass="Person" parameterClass="string">
          select Name,Password from Person where Password=#value#
        </select>
        <insert id="InsertPerson" parameterClass="Person">
          INSERT INTO Person
          (
          [Name],
          [Password]
          )
          VALUES
          (
          #Name#,
          #Password#
          )
        </insert>
        <delete id="DeletePersonByPassword" parameterClass="string">
          delete from Person where Password=#value#
        </delete>
        <delete id="DeletePerson" parameterClass="Person">
          delete from Person where Name=#Name# and Password=#Password#
        </delete>
        <procedure id="PrcInsertPerson" parameterMap="personSwap">
          InsertPerson
        </procedure>
        <procedure id="PrcInsertPersonBackID" parameterMap="personSwapTwo">
          InsertPersonBackID
        </procedure>
        <procedure id="PrcSelectPersonByName" parameterMap="personSwapThree" resultMap="personSwapThree">
          SelectPersonByName
        </procedure>
      </statements>
      

      <parameterMaps>
        <parameterMap id="personSwap" class="Person">
          <parameter property="Name" column="Name" />
          <parameter property="Password" column="Password" />
        </parameterMap>

        <parameterMap id="personSwapThree" class="Person">
          <parameter property="Name" column="Name" />
        </parameterMap>

        <parameterMap id="personSwapTwo" class="Person">
          <parameter property="Name" column="Name" />
          <parameter property="Password" column="Password" />
          <parameter property="ID" column="ID"  direction="Output" /> 
        </parameterMap>
      </parameterMaps>

      <resultMaps >

        <resultMap id="SelectAllResult" class="Person">
          <result property="ID" column="Id" />
          <result property="Name" column="Name" />
          <result property="Password" column="Password" />
        </resultMap>

        <resultMap id="personSwapThree" class="Person">
          <result property="Name" column="Name" />
          <result property="Password" column="Password" />
          <result property="ID" column="ID" />
        </resultMap>

      </resultMaps>


    学习用的,所以只测试了下增删改查、还有调用存储过程等的不同方式实现方法。

    实现的形式也只有一种,个人觉得会一种就够了,学样东西没问题一看所有方式都要会。想要的话自己看官方文档就好了。

     person.cs类

    using System;
    using System.Data;
    using System.Text;
    namespace IBatisNetDemo
    {
        /// <summary>
        
    /// 类Person。
        
    /// </summary>
        [Serializable]
        public class Person
        {
            public Person()
            { }
            #region Model
            private int _id;
            private string _name;
            private string _password;

            public int ID
            {
                set { _id = value; }
                get { return _id; }
            }
            /// <summary>
            
    /// 
            
    /// </summary>
            public string Name
            {
                set { _name = value; }
                get { return _name; }
            }
            /// <summary>
            
    /// 
            
    /// </summary>
            public string Password
            {
                set { _password = value; }
                get { return _password; }
            }
            #endregion Model
        }

    Default.aspx.cs 

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using IBatisNet.Common;
    using IBatisNet.DataMapper;
    using IBatisNet.DataMapper.Configuration;

    namespace IBatisNetDemo
    {
        public partial class _Default : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {


            }
            /// <summary>
            
    /// 配置SQL映射
            
    /// </summary>
            
    /// <returns>SQL映射</returns>
            public ISqlMapper getMapper()
            {
                DomSqlMapBuilder builder = new DomSqlMapBuilder();
                ISqlMapper Map = builder.Configure("SqlMap.config");
                return Map;
            }
            /// <summary>
            
    /// 实例化Person
            
    /// </summary>
            public Person getPerson
            {
                get
                {
                    Person p = new Person
                    {
                        Name = txtname.Text.ToString(),
                        Password = txtpassword.Text.ToString()
                    };
                    return p;
                }
            }
            /// <summary>
            
    /// 插入Person
            
    /// </summary>
            
    /// <param name="sender"></param>
            
    /// <param name="e"></param>
            protected void btnInsert_Click(object sender, EventArgs e)
            {
                getMapper().Insert("InsertPerson", getPerson);
            }
            /// <summary>
            
    /// 修改Person
            
    /// </summary>
            
    /// <param name="sender"></param>
            
    /// <param name="e"></param>
            protected void btnUpdate_Click(object sender, EventArgs e)
            {
                getMapper().Update("UpdatePerson", getPerson);
            }
            /// <summary>
            
    /// 查找Person
            
    /// </summary>
            
    /// <param name="sender"></param>
            
    /// <param name="e"></param>
            protected void btnSelect_Click(object sender, EventArgs e)
            {
                //IList<Person> plist = getMapper().QueryForList<Person>("SelectAll", null);
                IList<Person> plist = Mapper.Instance().QueryForList<Person>("SelectAll"null);
                gvPersonData.DataSource = plist;
                gvPersonData.DataBind();
            }
            /// <summary>
            
    /// 按密码查找
            
    /// </summary>
            
    /// <param name="sender"></param>
            
    /// <param name="e"></param>
            protected void btnSelectByPassword_Click(object sender, EventArgs e)
            {
                IList<Person> plist = Mapper.Instance().QueryForList<Person>("SelectByPassword", txtpassword.Text.ToString());
                if (plist != null && plist.Count > 0)
                {
                    gvPersonData.DataSource = plist;
                    gvPersonData.DataBind();
                }
            }
            /// <summary>
            
    /// 删除Person
            
    /// </summary>
            
    /// <param name="sender"></param>
            
    /// <param name="e"></param>
            protected void btnDelete_Click(object sender, EventArgs e)
            {
                int i = Mapper.Instance().Delete("DeletePerson", getPerson);
            }
            /// <summary>
            
    /// 按密码删除
            
    /// </summary>
            
    /// <param name="sender"></param>
            
    /// <param name="e"></param>
            protected void btnDeleteByPassword_Click(object sender, EventArgs e)
            {
                int i = Mapper.Instance().Delete("DeletePersonByPassword", txtpassword.Text.ToString());
            }
            /// <summary>
            
    /// 存储过程操作插入Person
            
    /// </summary>
            
    /// <param name="sender"></param>
            
    /// <param name="e"></param>
            protected void btnPrcInsert_Click(object sender, EventArgs e)
            {
                Mapper.Instance().Insert("PrcInsertPerson", getPerson);
            }
            /// <summary>
            
    /// 存储过程插入Person
            
    /// </summary>
            
    /// <param name="sender"></param>
            
    /// <param name="e"></param>
            protected void btnPrcInsertBack_Click(object sender, EventArgs e)
            {
                Person p = new Person
                {
                    Name = "xiede",
                    Password = "123456"
                };
                Mapper.Instance().Insert("PrcInsertPersonBackID", p);

                Response.Write(p.ID.ToString());
            }
            /// <summary>
            
    /// 存储过程按姓名查找Person
            
    /// </summary>
            
    /// <param name="sender"></param>
            
    /// <param name="e"></param>
            protected void btnPrcSelect_Click(object sender, EventArgs e)
            {
                IList<Person> plist = Mapper.Instance().QueryForList<Person>("PrcSelectPersonByName", getPerson);

              gvPersonData.DataSource = plist;
              gvPersonData.DataBind();
            }

        }


     看过的人都会觉得这样的实现方式相当简单,确实在我之前跟进一个项目时也用到了Ibatis,记得人家还特意封装了下Ibatis。

    而Ibatis给我的感觉还是比较多的配置。配置这些都是简单的事情。我也刚学不久,还是先把理论下下来,呵呵!

    附上一下源代码

     
  • 相关阅读:
    Haskell语言学习笔记(76)Data.Tree
    C++17尝鲜:编译期 if 语句
    C++17尝鲜:variant
    Haskell语言学习笔记(75)Conduit
    C++17尝鲜:string_view
    Haskell语言学习笔记(74)GADTs
    Haskell语言学习笔记(73)Existentials
    Haskell语言学习笔记(72)Free Monad
    sum of powers
    「2017 山东一轮集训 Day7」逆序对
  • 原文地址:https://www.cnblogs.com/xoray007/p/2278958.html
Copyright © 2011-2022 走看看