MyBatisの簡単な紹介をお知らせします
MyBatisは、プレーンSQLクエリ、ストアドプロシージャ、高度なマッピングをサポートする優れた永続レイヤーフレームワークです。 MyBatisは、ほぼすべてのJDBCコードとパラメーターの手動設定と、結果セットの検索カプセル化を排除します。 MyBatisは、構成とオリジナルマッピング、マッピングインターフェイス、JavaのPOJO(プレーンオールドJavaオブジェクト)に、データベース内のレコードに簡単なXMLまたはアノテーションを使用できます。
この記事は、実際にはJava Operation Oracle Type XMLType Summary 2:MyBatisの使用の要約です。
MyBatisはカスタムコンバーターを実装していますが、これは非常に簡単です。その主な手順は、3つのステップに分かれています。ここでは、XMLTYPEタイプを操作します。
最初のステップ
新しい変換クラスを作成して、TypeHandlerインターフェイスを実装します。インターフェイスのgenericsはパラメータータイプを指定し、指定されていない場合はオブジェクトです。
パブリッククラスxmltypetypehandlerを実装しますtypehandler <string>
このインターフェイスには、次の4つの方法があります。
public void setParameter(preatedStatement PS、int i、string parameter、jdbctype jdbctype)public string getResult(resultet rs、string columnname)スローSqlexceptionpublic string getResult(resultet rs、int columnindex)スロー
メソッドの機能は、名前で理解する必要があります。 SetParameterは、パラメーターを渡すときの操作です。パラメーターがデータベースに渡される前に処理する必要があるコードは、この方法で記述できます。他の3つは、クエリ結果を取得する方法です。 JDBCのクエリ結果を取得した後、必要な任意のタイプに変換できます。
ステップ2
Mapper-configで、実装したコンバータークラスを登録します。ここでは、JDBCTYPEが指定できるタイプがMyBatisの列挙クラスorg.apache.ibatis.type.jdbctypeで明確に定義されています。列挙以外の値にすることはできません。そうしないと、エラーが発生します。ここでは、列挙には必要なXMLTYPEタイプがないため、未定義として指定されています。 (特定のタイプを指定することもできません。TypeHandlerを使用して、使用時に特定のクラスを指定できます):
<TypeHandlers> <TypeHandler javatype = "string" jdbctype = "undefined" handler = "com.tyyd.dw.context.xmltypetypehandler"/>> </typehandlers>
ステップ3
マッパーマッピングファイルでタイプコンバーターを使用します。
t_content(<include refid = "fullcolumns"/>)値に挿入します(#{controlId、jdbctype = bigint}、#{xmlfile、javatype = string、jdbctype = undefined、typehandler = com.tyyd.dw.context.xmltypetypehandler}、#{drmfile、jdbctype = blob})Javatype、JDBCtype、およびTypeHandlerを指定するXmlfileパラメーターに注意してください。使用するプロセッサのタイプを示します。もちろん、それらのいずれかを指定することしかできませんが、このアイテムの存在は一意でなければなりません。複数がまったく同じで、仕様が明確でない場合、MyBatisは区別できないためエラーを引き起こします。
この時点で、MyBatisのカスタムタイプコンバーターが実装されています。上記のタイプのプロセッサは、データを挿入するときにのみ機能することに注意してください。クエリ中にカスタムタイププロセッサを使用する場合は、結果マップの属性のタグで指定する必要があります。タグの名前と使用方法Javatype、jdbctype、およびtypehandlerは同じですので、ここでは繰り返しません。
完全なタイプコンバーターコードを添付します。 xmltypeタイプをクエリする場合、データベースのxmltype.getclobval()を使用して文字列として直接返すことができるため、返されたメソッドは特別に処理されていません。 (xmltype.getStringVal()関数を使用して文字列を返すこともできますが、実際の使用中に、フィールドがnullの場合、getStringval()の誤差があることがわかります。
/*** oracle sys.xmltypeタイプカスタムプロセッサ**ユーザー:liyd*日付:13-12-27*時間:4:53 PM*/public class xmltypetypehandlerはtypehandler <string> {@overridepublic void setparameter(preatedstatementmentements ps、int i、string splxepe paramots parameter XMLTYPEの作成nullが必要なときにnullが必要な場合に(stringutils.isnotblank(parameter)){DelegatingConnection connection =(DelegatingConnection)ps.getConnection()。getMetadata()。getConnection(); xmltype xmltype = xmltype.createxml xmltype);} else {ps.setString(i、null);}}@overridepublic string getResult(resultet rs、string columnName)sqlexception {// xmltypeフィールドはxmltype.getclobval()を使用してxmltype.getclobvalを使用します。 rs.getString(columnname);}@overridepublic string getResult(resultset rs、int columnindex)squelception {return rs.getString(columnindex);}@overridepublic string getResult(caillablestatement cs、int columnindex)sqlexception {return cs.getString(columnindex);}上記は、MyBatisのTypeHandlerを実装して、TypeHandlerによってカスタマイズされたタイプコンバーターを実装する方法です。私はそれが誰にでも役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は、すべての人に時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!