Frage

Diese Frage ist in Bezug auf eine andere Frage, die ich habe:

War es hilfreich?

Lösung

Wenn ich dich verstehe Recht dann würden Sie die volle Kontrolle über die Art und Weise zu bekommen, wie iBatis Karten auf ein Objekt.

Sie können dies tun, mit dem ITypeHandlerCallback . Werfen Sie einen Blick für eine vollständige Beschreibung in der PDF-Dokumentation im Abschnitt "3.5.5. Benutzerdef Handlers".

Ich habe etwas Ähnliches mit Tables getan. Ihre Umsetzung könnte wie folgt aussehen:

class DataTableBuilder : ITypeHandlerCallback
{
    public object GetResult(IResultGetter getter)
    {
        IDataReader reader = getter.DataReader;

        // (A) define whatever type you want to

        // (B) read rows from DataReader and populate your type from (A)
        while (reader.Read())
        {
            // iterate over the columns of the current row
            for (int i = 0; i < reader.FieldCount; i++)
            {
               // populate your type from (A)
            }                    
        }
        return ...;   // return your type from (A)
    }

    // implement the other members of ITypeHandlerCallback
    // the implementation below actually worked for me
    public object NullValue { get { return null; } }
    public void SetParameter(IParameterSetter setter, object parameter) { }
    public object ValueOf(string s) { return s; }
}

Ein letzter Hinweis: iBatis ist gut für den Aufbau von Datenübertragungsobjekte (DTOs). Wenn Sie so etwas wie oben versuchen, könnten Sie bereits in Bewegung in Richtung eines Business-Objekt-Ansatz. Dies könnte bekommen schmerzhaft mit iBatis. Zur Zeit (gut ... für ein paar Monate schon, wegen des Mangels an Zeit) Ich Auswertung NHibernate als Alternative. Ich denke, dass NHibernate ist der Umgang mit Business-Objekt Ansätze viel glatter als iBatis der Fall ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top