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的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jQuery deferred应用dom
- 下一篇: win7下安装IIS7.0及部署VS20