日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

Ibatis.Net 学习手记一 简单的Demo

發布時間:2024/9/5 asp.net 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Ibatis.Net 学习手记一 简单的Demo 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近在做游戲推廣的需求,趁公司給了不少充足的時間...再一次看了下自己以前學過的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給我的感覺還是比較多的配置。配置這些都是簡單的事情。我也剛學不久,還是先把理論下下來,呵呵!

?

附上源代碼:

http://files.cnblogs.com/panlijuan/IBatisNetDemo.rar

轉載于:https://www.cnblogs.com/panlijuan/archive/2011/12/07/2279419.html

總結

以上是生活随笔為你收集整理的Ibatis.Net 学习手记一 简单的Demo的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。