Izinkan saya memberi Anda pengantar singkat untuk mybatis
Mybatis adalah kerangka kerja lapisan kegigihan yang sangat baik yang mendukung pertanyaan SQL biasa, prosedur tersimpan dan pemetaan lanjutan. Mybatis menghilangkan pengaturan manual hampir semua kode dan parameter JDBC dan enkapsulasi pencarian dari set hasil. Mybatis dapat menggunakan XML sederhana atau anotasi untuk konfigurasi dan pemetaan asli, antarmuka pemetaan dan pojos Java (objek java tua biasa) ke dalam catatan dalam database.
Artikel ini sebenarnya adalah ringkasan dari Operasi Java Oracle Type XMLType Ringkasan 2: Menggunakan MyBatis.
Mybatis mengimplementasikan konverter khusus, yang sangat sederhana. Langkah utamanya dibagi menjadi tiga langkah. Di sini kami mengambil jenis pengoperasian xmlType sebagai contoh.
Langkah pertama
Buat kelas konversi baru untuk mengimplementasikan antarmuka TypeHandler. Generik antarmuka menentukan jenis parameter, dan jika tidak ditentukan, itu adalah objek:
Kelas Publik XMLTyPetyPehandler mengimplementasikan TypeHandler <String>
Antarmuka ini memiliki 4 metode berikut:
public void setParameter(PreparedStatement ps, int i, String parameter, JdbcType jdbcType) public String getResult(ResultSet rs, String columnName) throws SQLExceptionpublic String getResult(ResultSet rs, int columnIndex) throws SQLExceptionpublic String getResult(CallableStatement cs, int columnIndex) throws SQLException
Fungsi metode harus dipahami dengan nama. SetParameter adalah operasi saat melewati parameter. Kode yang perlu diproses sebelum parameter diteruskan ke dalam database dapat ditulis dalam metode ini. Tiga lainnya adalah metode untuk mendapatkan hasil kueri. Setelah mendapatkan hasil kueri JDBC, itu dapat dikonversi ke jenis apa pun yang Anda inginkan.
Langkah 2
Di Mapper-Config, daftarkan kelas konverter yang Anda terapkan, di mana jenis yang dapat ditentukan oleh JDBCTYPE secara jelas didefinisikan dalam kelas enumerasi mybatis org.apache.ibatis.type.jdbctype. Itu tidak bisa menjadi nilai selain enum, jika tidak kesalahan akan terjadi. Di sini, karena enum tidak memiliki tipe XMLType yang kita butuhkan, itu ditentukan sebagai tidak terdefinisi. (Anda juga tidak dapat menentukan jenis tertentu. Anda dapat menggunakan TypeHandler untuk menentukan kelas tertentu saat menggunakan):
<peseHandlers> <typeHandler javatype = "string" jdbctype = "tidak terdefinisi" handler = "com.tyyd.dw.context.xmltypetypehandler"/> </peipeHandlers>
Langkah 3
Gunakan Type Converter di file pemetaan mapper Anda:
Sisipkan ke dalam nilai T_Content (<include refid = "fullColumns"/>) (#{controlid, jdbctype = bigint},#{xmlfile, javatype = string, jdbctype = tidak terdefinisi, com.tyyd.dw.context.xmltypeted}}}}}}}}}}}}}}}}}}}}}}}}} @conteks.Perhatikan parameter XMLFile yang masuk, menentukan javatype, jdbctype dan typeHandler, menunjukkan jenis prosesor mana yang ingin kami gunakan. Tentu saja, Anda hanya dapat menentukan salah satunya, tetapi keberadaan item ini harus unik. Jika beberapa sama persis dan spesifikasinya tidak jelas, mybatis akan menyebabkan kesalahan karena tidak dapat membedakan.
Pada titik ini, konverter tipe khusus untuk MyBatis telah diimplementasikan. Perlu dicatat bahwa prosesor tipe yang ditentukan di atas hanya berfungsi saat memasukkan data. Jika Anda ingin menggunakan prosesor tipe kustom selama kueri, Anda perlu menentukannya dalam tag atribut di HasilMap. Nama dan metode penggunaan tag javatype, jdbctype dan typeHandler sama, jadi saya tidak akan mengulanginya di sini.
Lampirkan Kode Konverter Jenis Lengkap. Karena ketika tipe XMLType harus ditanyakan, Anda dapat menggunakan basis data xmltype.getClobval () untuk secara langsung kembali sebagai string untuk beroperasi, sehingga metode yang dikembalikan belum diproses secara khusus. (Anda juga dapat menggunakan fungsi xmltype.getStringVal () untuk mengembalikan string, tetapi selama penggunaan aktual, ditemukan bahwa ketika bidangnya nol, getStringVal () akan memiliki kesalahan ORA-06502: Fungsi Numerik atau Nilai: Get Buffer Karakter, GetClobval () tidak akan memiliki kesalahan, sehingga digunakan untuk digunakan untuk digunakan untuk digunakan, getClobval (): GetClobval () tidak akan memiliki kesalahan, jadi getsclobval () tidak akan ada kesalahan, jadi getsclobval (getsclobval () tidak akan ada kesalahan, jadi getsclobval (getsclobval () tidak akan ada kesalahan, jadi getsclobval (getsclobval): Getclobval (Get) function: Getclobval ()
/*** oracle sys.xmlType type Prosesor Kustom** Pengguna: Liyd* Tanggal: 13-12-27* Waktu: 4:53 PM*/Kelas Publik XMLTyPetyPehandler mengimplementasikan TypeHandler <String> {@Overridepublic void JdParameter (preparedStatement PS, int i, parameter string, JDBCTEPLIC JDBCTEPUBER (PARAMETER JDBCKEPLIC (Parameter String, XmlType Saat null diperlukan jika (stringutils.isnotblank (parameter)) {delegatingConnection connection = (delegatingConnection) ps.getConnection (). GetMetadata (). GetConnection (); xmltype xmltype = xmltype.ceatexmmmmlection (connection.getypeate (s.smelEgePePe); PARAMETEPEPERIPE (S.SEGETEPEPLEGEDE (PARAMETYPEDE (PARAMETYPE (PARAMETYPE (PARAMETYPETEPE (PARAMETYPE (PARAMETYPE (PARAMETYPETEP (PARAMETYPE () xmlType);} else {ps.setstring (i, null);}}@overridepublic string getResult (hasil rs, string columnName) melempar sqlexception {// bidang xmltype@getsclobval () untuk mengembalikan saat querying database@@getsclobval () untuk kembali saat querying database@evaluon; getResult (hasil rs, int columnIndex) melempar sqlexception {return rs.getString (columnIndex);}@overridepublic getResult (callablestatement cs, int columnIndex) melempar sqlexception {return cs.getString (columnIndex);}}Di atas adalah metode penerapan TypeHandler untuk MyBatis untuk mengimplementasikan konverter tipe yang disesuaikan oleh TypeHandler. Saya harap ini akan membantu semua orang. Jika Anda memiliki pertanyaan, silakan tinggalkan saya pesan dan editor akan membalas semua orang tepat waktu. Terima kasih banyak atas dukungan Anda ke situs web Wulin.com!