91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何淺析iBATIS.NET字段映射自定義對象

發布時間:2021-10-28 10:14:38 來源:億速云 閱讀:132 作者:柒染 欄目:編程語言

如何淺析iBATIS.NET字段映射自定義對象,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

iBATIS.NET字段映射是什么意思呢?在iBATIS.NET中,查詢后的結果會自動將每一個字段映射成Domain中的一個屬性值,這個映射的過程是通過TypeHandlerFactory類進行的,在程序初始化時注冊了一些系統類和類型轉換類之間的關系:

handler = new NullableBooleanTypeHandler();  this.Register(typeof(bool?), handler);   handler = new NullableByteTypeHandler();  this.Register(typeof(byte?), handler);   handler = new NullableCharTypeHandler();  this.Register(typeof(char?), handler);   handler = new NullableDateTimeTypeHandler();  this.Register(typeof(DateTime?), handler);   handler = new NullableDecimalTypeHandler();  this.Register(typeof(decimal?), handler);   handler = new NullableDoubleTypeHandler();  this.Register(typeof(double?), handler);   handler = new NullableGuidTypeHandler();  this.Register(typeof(Guid?), handler);   handler = new NullableInt16TypeHandler();  this.Register(typeof(Int16?), handler);   handler = new NullableInt32TypeHandler();  this.Register(typeof(Int32?), handler);   handler = new NullableInt64TypeHandler();  this.Register(typeof(Int64?), handler);   handler = new NullableSingleTypeHandler();  this.Register(typeof(Single?), handler);   handler = new NullableUInt16TypeHandler();  this.Register(typeof(UInt16?), handler);   handler = new NullableUInt32TypeHandler();  this.Register(typeof(UInt32?), handler);   handler = new NullableUInt64TypeHandler();  this.Register(typeof(UInt64?), handler);   handler = new NullableSByteTypeHandler();  this.Register(typeof(SByte?), handler);   handler = new NullableTimeSpanTypeHandler();  this.Register(typeof(TimeSpan?), handler);

那么如果想將數據庫中的一個字段映射成我們自己的一個類,在這個類中進行一些個性化處理,應該怎么辦呢?

本來我想仿照StringTypeHandler類寫一個自己的類型處理類,但是通過查看iBATIS的源代碼,就算寫好了自己的類型處理類,好像也找不到注冊的接口(如果哪位兄弟找到了接口,望告知)

另一種方式是通過已經注冊的CustomTypeHandler類型,實行其中的ITypeHandlerCallback接口來實現的,具體實現方式如下:

我這里實現的只是一個演示程序,演示將數據庫中的Account_LastName和Account_Email字段映射成自定義的Property類型,同時把它們放入一個Hashtable中。

iBATIS.NET字段映射1、

自定義Property類

namespace GSpring.Common  {      public class Property      {          private string _dataValue;           public string DataValue          {              get { return _dataValue; }              set { _dataValue = value; }          }           private string _dataType;           public string DataType          {              get { return _dataType; }              set { _dataType = value; }          }      }  }

iBATIS.NET字段映射2、

實現ITypeHandlerCallback接口的類

namespace GSpring.Common  {      public sealed class PropertyTypeHandler : ITypeHandlerCallback      {           public object ValueOf(string Value)          {              Property obj = new Property();              obj.DataValue = Value;              return obj;          }           public object GetResult(IResultGetter getter)          {              Property obj = new Property();              if (getter.Value != null && getter.Value != System.DBNull.Value)              {                  obj.DataValue = (string)getter.Value;              }              return obj;          }           public void SetParameter(IParameterSetter setter, object parameter)          {              setter.Value = ((Property)parameter).DataValue;          }           public object NullValue          {              get { return null; }          }      }   }

主要是其中的GetResult和SetParameter方法,實現和數據庫之間的存取操作。

iBATIS.NET字段映射3、

修改對應的Domain類,加入兩個屬性:

public Hashtable ht = new Hashtable();  Property _emailAddress1 = new Property();  public Property EmailAddress1  {      get      {          return _emailAddress1;      }      set      {          _emailAddress1.DataType = "string";          _emailAddress1.DataValue = value.DataValue;          ht["郵件"] = _emailAddress1;      }  }   Property _lastName1 = new Property();  public Property LastName1  {      get      {          return _lastName1;      }      set      {          _lastName1.DataType = "string";          _lastName1.DataValue = value.DataValue;          ht["姓名"] = _lastName1;      }  }

iBATIS.NET字段映射4、

修改配置文件:

﹤resultMap id="account-result"  class="Account" ﹥      ﹤result property="Id"           column="Account_ID"/﹥      ﹤result property="FirstName"    column="Account_FirstName"/﹥      ﹤result property="LastName1"     column="Account_LastName"  typeHandler="GSpring.Common.PropertyTypeHandler"/﹥      ﹤result property="EmailAddress1" column="Account_Email" typeHandler="GSpring.Common.PropertyTypeHandler"/﹥  ﹤/resultMap﹥

主要是利用了其中的typeHandler屬性來指定一個類型轉換器。

關于如何淺析iBATIS.NET字段映射自定義對象問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

灵山县| 台前县| 武平县| 乌鲁木齐市| 衡山县| 东平县| 广元市| 聂荣县| 元阳县| 清镇市| 蓝山县| 确山县| 侯马市| 中西区| 利川市| 桐乡市| 云阳县| 响水县| 酒泉市| 柘荣县| 纳雍县| 邢台县| 新田县| 合江县| 宣汉县| 阳城县| 兴国县| 武功县| 墨江| 龙岩市| 射洪县| 屏东市| 勃利县| 抚远县| 洪江市| 穆棱市| 吴桥县| 乌兰浩特市| 乐清市| 石楼县| 凌源市|