Tubuh asli Mybatis adalah iBatis, dan sekarang telah terpisah dari Apache Foundation. Situs web resmi baru adalah http://www.mybatis.org/.
Saya tidak tahu penggunaan ajaib dari anotasi ini sebelum mempelajari kode sumber mybatis, tetapi ketika saya melihat ada anotasi ini ketika mem -parsing parameter, saya mengerti bahwa ketika kita mengembalikan jenis seperti peta <string, peta <string, objek >>, seringkali sulit bagi kita untuk melakukannya, karena mungkin data dari berbagai tabel, sehingga tidak mungkin bagi kita untuk membangun model lain.
Kemudian kita bisa menggunakan anotasi ini
@Retention (retentionpolicy.runtime) @target (elementType.method) public @interface mapkey {string value ();}Jelas bahwa anotasi ini digunakan pada metode ini, dan penggunaan spesifik adalah untuk mengatur apa kunci peta eksternal. Dengan cara ini kita dapat menanyakan hasil yang sangat kompleks tanpa menciptakan entitas baru.
PS: Mari kita lihat mybatis menggunakan anotasi @mapkey untuk menerima beberapa catatan kueri ke dalam peta, sehingga dapat dengan mudah mendapatkan nilai bidang menggunakan metode get ().
Skenario Persyaratan:
Batch-temukan beberapa bagian data dari database, termasuk dua bidang: ID dan nama. Saya harap hasilnya dapat diterima secara langsung menggunakan peta, dan kemudian nilai nama dapat dengan mudah diperoleh melalui peta.get (id).
pertanyaan:
Jika Anda menggunakan kode berikut, jika ada beberapa hasil kueri, kesalahan akan dilaporkan, karena Mybatis menyimpan hasil dalam peta dalam bentuk ("id": 123) dan ("name": "jack"). Jadi jika Anda mengembalikan hasilnya, tidak apa -apa untuk memiliki catatan termasuk ID dan nama; Jika Anda mengembalikan beberapa catatan, yaitu ada beberapa ("id": 123) dan ("id": 124), maka mybatis akan bodoh dan tidak tahu bagaimana menghadapinya.
Peta <string, object> m = abcdao.getNamesByIds (idList);
Solusinya adalah menggunakan peta lain di luar:
Peta <integer, peta <string, objek >> m = abcdao.getNamesByIds (idList);
Kemudian, tambahkan anotasi ke metode ini:
<span style = "White-space: pre"> </span>/** <span style = "White-space: pre"> </span> * Dapatkan nama dalam batch berdasarkan beberapa id <span style = "space putih: pre"> </span> * @param Daftar yang berisi peta key = "id style" <span style = "white-space: pre"> <pan> span> span * @rentang @" style = "White-Space: Pre"> </span> */<span style = "White-space: pre"> </span> @mapkey ("id") <span style = "White-space: pre"> </span> peta publik <integer, peta <string, objek >> getNamesByIds (daftar <peta <string, objek >> daftar);Anotasi ini menunjukkan bahwa kunci peta terluar adalah nilai bidang bernama "id" dalam hasil kueri.
Konfigurasi di mapper.xml adalah sebagai berikut:
<pilih id = "getNamesByIds" resultType = "java.util.map"> pilih id, nama dari tb_abc di mana id di <freeach item = "item" collection = "list" open = "(" sparator = "," close = ")"> #{item.id} </foreach> </pilih>Di atas adalah penjelasan terperinci tentang penggunaan @mapkey dalam anotasi mybatis yang diperkenalkan kepada Anda oleh editor. Saya harap ini akan membantu Anda. Jika Anda memiliki pertanyaan, silakan tinggalkan saya pesan dan editor akan membalas Anda tepat waktu. Terima kasih banyak atas dukungan Anda ke situs web Wulin.com!