Lassen Sie mich Ihnen eine kurze Einführung in MyBatis geben
MyBatis ist ein hervorragendes Rahmen für Persistenzschicht, das einfache SQL -Abfragen, gespeicherte Verfahren und erweiterte Zuordnung unterstützt. MyBatis eliminiert manuelle Einstellungen fast aller JDBC -Code und -Parameter sowie die Suche in der Ergebnisse des Ergebnissatzes. MyBatis kann einfache XML oder Anmerkungen zur Konfiguration und ursprüngliche Zuordnung, Mapping -Schnittstellen und Javas Pojos (einfache alte Java -Objekte) in Datenbank in der Datenbank verwenden.
Dieser Artikel ist eigentlich eine Zusammenfassung der Java -Oracle Type XMLTYPE -Zusammenfassung 2: Verwendung von MyBatis.
MyBatis implementiert einen benutzerdefinierten Konverter, der sehr einfach ist. Die Hauptschritte sind in drei Schritte unterteilt. Hier nehmen wir als Beispiel die operativen XMLTYPE -Typen an.
Erster Schritt
Erstellen Sie eine neue Konvertierungsklasse, um die Typhandler -Schnittstelle zu implementieren. Die Generika der Schnittstelle geben den Parametertyp an und falls nicht angegeben, ist es Objekt:
public class xmltypetypeHandler implementiert typeHandler <string>
Diese Schnittstelle hat die folgenden 4 Methoden:
public void setParameter (prepectStatement ps, int i, String -Parameter, jdbctype jdbctype) öffentlicher String getResult (Ergebnisset RS, String ColumnName) löst sqlexceptionpublic String getResult (resultset rs, int columnIndex) aus sqlexceptepublic String -String -Sting -Sting -Sting -Sting -Sting -Sting -SKRESULT (Callablestatement cs, IntclexceptionPublic -Sting -skazipiert.
Die Funktion der Methode sollte mit dem Namen verstanden werden. SetParameter ist eine Operation beim Übergeben von Parametern. Der Code, der vor dem Übergeben der Parameter in die Datenbank verarbeitet werden muss, kann in dieser Methode geschrieben werden. Die anderen drei sind Methoden zur Erlangung des Abfrageergebnisses. Nach dem Erhalt des Abfrageergebnisses von JDBC kann es in einen beliebigen Typ konvertiert werden.
Schritt 2
Registrieren Sie in Mapper-Config die von Ihnen implementierte Konverterklasse, wobei der Typ, den JdbcType angeben kann, in MyBatis 'Aufzählungsklasse org.apache.ibatis.type.jdbctype klar definiert ist. Es kann nicht ein anderer Wert als der Enum sein, andernfalls tritt ein Fehler auf. Da der Enum nicht den XMLTYPE -Typ hat, den wir benötigen, ist er als undefiniert angegeben. (Sie können auch bestimmte Typen nicht angeben. Sie können bei Verwendung von TypeHandler bestimmte Klassen angeben):
<typeHandlers> <typeHandler javatype = "String" jdbctype = "undefined" Handler = "com.tyyd.dw.context.xmltypetypeHandler"/> </typeHandlers>
Schritt 3
Verwenden Sie den Typ Converter in Ihrer Mapper -Mapping -Datei:
In t_Content (<integrieren refid = "fullColumns"/>) Werte einfügen (#{ControlId, jdbctype = bigint},#{xmlfile, javatype = string, jdbctype = undefined, typeHandler = com.tyyd.dw.context.xmltypetypeHandler},#{drmfile, jdbctype = blob}))Achten Sie auf die eingehenden XMLFile -Parameter, wobei Javatype, JdbcType und TypHandler angeben und angeben, welche Art von Prozessor wir verwenden möchten. Natürlich können Sie nur einen von ihnen angeben, aber die Existenz dieses Elements muss einzigartig sein. Wenn mehrere genau gleich sind und die Spezifikation nicht klar ist, verursacht MyBatis einen Fehler, da sie nicht unterscheiden kann.
Zu diesem Zeitpunkt wurde ein benutzerdefinierter Konverter für MyBatis implementiert. Es ist zu beachten, dass der oben angegebene Typprozessor nur beim Einfügen von Daten funktioniert. Wenn Sie während der Abfrage einen benutzerdefinierten Prozessor verwenden möchten, müssen Sie diese in den Tags der Attribute im Ergebnismap angeben. Die Namen und Verwendungsmethoden der Tags Javatype, JdbcType und TypsHandler sind gleich, daher werde ich sie hier nicht wiederholen.
Fügen Sie den kompletten Konvertercode des kompletten Typs bei. Denn wenn der XMLTYPE -Typ abfragt werden soll, können Sie die XMLTYPE der Datenbank verwenden .getClobval (), um direkt als String zurückzukehren, um zu operieren, sodass die zurückgegebenen Methoden nicht speziell verarbeitet wurden. (Sie können auch die Funktion xmlType.getStringval () verwenden, um die Zeichenfolge zurückzugeben. Während des tatsächlichen Gebrauchs wird festgestellt, dass GetStringVal () einen Fehler von ORA-065022 hat: Numerischer oder Wertfehler: Charakter-String-Puffer zu klein, getlowval () hat keinen Fehler.
/*** Oracle sys.xmltype Typen benutzerdefinierter Prozessor** Benutzer: Liyd* Datum: 13-12-27* Zeit: 4:53 PM*/public Class XmltyPeTypeHandler implementiert TypHandler <string> {@Overridepublic void void setParameter (hergestelltes statement ps, int i, String parameter, jdbctype jdbctype jdbctpe jdbctype jdbctype jdbctype jdbctype jdbctype jdbctype) Erstellen von xmlType Wenn null benötigt wird, wenn (Stringutils.isnotblank (Parameter)) {DelegatingConnection Connection = (DelegatingConnection) ps.getConnection (). getMetadata (). xmltype);} else {ps.setString (i, null);}}@oversidepublic String getResult (Ergebnisset rs, String columnName) löst SQLEXception aus {// Das XMLTYPE -Feld xmlType verwendet xmltype. getResult (resultset rs, int columnIndex) löscht sqlexception {return rs.getString (columnIndex);}@oversidePublic String getResult (Callablestatement cs, int columnIndex) aus SQLEXception {return cs.getString (columnIndex);}}}}}}}}}}}}}}Das obige ist die Methode zur Implementierung des TypsHandlers für MyBatis, um den benutzerdefinierten Typ -Konverter durch TypeHandler zu implementieren. Ich hoffe, es wird für alle hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird allen rechtzeitig antworten. Vielen Dank für Ihre Unterstützung auf der Wulin.com -Website!