1. Ikhtisar
Saat memilih pemetaan di mybatis, tipe pengembalian dapat digunakan dengan HRESSTYPE atau RACKMAP. HasilType secara langsung mewakili tipe pengembalian, sedangkan RACKMAP adalah referensi ke Hasil ExternalMap, tetapi HasilType dan RACKMAP tidak dapat ada pada saat yang sama.
Ketika mybatis memetakan pemetaan, pada kenyataannya, setiap kueri atribut ditempatkan di peta yang sesuai, di mana kunci adalah nama atribut dan nilainya adalah nilai yang sesuai.
① Ketika atribut tipe pengembalian yang disediakan adalah HasilType, MyBatis akan mengeluarkan pasangan nilai kunci di peta dan menetapkannya ke atribut yang sesuai dari objek yang ditentukan oleh HasilType. Jadi pada kenyataannya, jenis pengembalian dari setiap peta kueri mybatis adalah hasil. Namun, ketika atribut tipe pengembalian yang disediakan adalah HasilType, MyBatis secara otomatis menetapkan nilai yang sesuai ke atribut objek yang ditentukan oleh HasilType.
② Ketika tipe pengembalian yang disediakan adalah HasilMap, karena peta tidak dapat mewakili model domain dengan baik, ia perlu mengubahnya lebih jauh menjadi objek yang sesuai itu sendiri, yang seringkali sangat berguna dalam kueri kompleks.
2. Hasil Hasil
Blog.javapublic Class Blog {private int id; judul string pribadi; konten string pribadi; pemilik string pribadi; daftar pribadi <momment> komentar;}Tabel database yang sesuai menyimpan ID, judul, konten, dan atribut pemilik.
<Typealias alias = "blog" type = "com.tians.mybatis.model.blog"/> <pilih id = "selectblog" parameterType = "int" resultType = "blog"> Pilih * dari t_blog di mana id = #{id} </pilih>MyBatis akan secara otomatis membuat objek HasilMap, dan kemudian merangkum pasangan nilai kunci berdasarkan nama atribut yang ditemukan. Kemudian, Anda akan melihat bahwa tipe pengembalian adalah objek blog, dan kemudian mengambil pasangan nilai kunci yang sesuai dengan objek blog dari RACKMAP dan menetapkannya.
3. Hasil
Ini juga sangat berguna ketika tipe pengembalian secara langsung ARACTMAP, yang terutama digunakan untuk kueri sambungan yang kompleks, karena tidak perlu melakukan kueri sederhana. Pertama -tama mari kita lihat kueri sederhana dengan type resultMap, dan kemudian lihat penggunaan kueri yang kompleks.
① menulis pertanyaan sederhana
<resultMap type = "blog" id = "blogresult"> <id kolom = "id" properti = "id"/> <colom hasil = "title" properti = "title"/> <hasil kolom = "konten" properti = "konten"/> <hasil kolom = "pemilik" Properti = "pemilik"/> <hasil kolom = "Pemilik"/Pemilik = "pemilik"/> <pemilik hasil = "Pemilik"/> Kolom "Pemilik"/Pemilik "Pemilik =" Pemilik "/> <pemilik hasil =" properti = "pemilik"/> <</resultMap> <pilih id = "selectblog" parameTerType = "int" resultMap = "blogresult"> pilih * dari t_blog di mana id = #{id} </ pilih>Nilai HasilMap di peta SELECT adalah ID dari Hasil Eksternal, menunjukkan hasil mana yang dipetakan. Atribut tipe dari Hasil Eksternal Map menunjukkan jenis apa hasil dari HasilMap. Ini jenis blognya, jadi Mybatis akan mengeluarkannya sebagai objek blog. ID simpul anak dari simpul Hasilmap digunakan untuk mengidentifikasi ID objek, sedangkan simpul anak hasil digunakan untuk mengidentifikasi beberapa sifat sederhana. Properti kolom mewakili atribut yang ditanyakan dari database, dan properti mewakili properti mana yang nilai yang sesuai dari properti kueri ditetapkan untuk objek entitas. Ini adalah cara menulis HasilMap untuk kueri sederhana.
② Kueri Kompleks
Ada kelas komentar, yang memiliki referensi blog, menunjukkan untuk blog mana itu. Saat meminta komentar, blog yang sesuai juga harus ditemukan dan ditugaskan ke atribut blognya.
KOMENTAR KELAS PUBLIK {private int id; konten string pribadi; private Date commentDate = tanggal baru (); blog blog pribadi;} <!-dari file commentMapper.xml-> <resultMap type = "comment" id = "commentResult"> <Association Properti = "" Select = "SelectBlog" Kolom = "Blog" JAVATYPE = "Blog"/Blog "PARACOP =" PLOCLOG = "Blog" Blog "JAVATYPE =" Blog "/</Hasils/Hasils =" ID "Blog" Blog "JAVATYPE =" BLOG "/BOBAN" resultMap = "CommentResult"> SELECT * Dari t_comment Where ID = #{ID} </tilih> <pilih id = "selectblog" parameTerType = "int" resultType = "blog"> pilih * dari t_blog di mana id = #{id} </pilih>Pertama, minta peta pilih dengan ID sebagai SelectComment, dan kemudian dapatkan objek HasilMap dengan ID sebagai CommentResult. Anda dapat melihat bahwa jenis pengembalian dari Hasil yang sesuai adalah objek komentar, yang hanya memiliki satu node asosiasi, dan tidak ada ID dan hasil node anak yang sesuai dengan kueri sederhana yang disebutkan di atas. Namun, itu masih akan menetapkan ID yang sesuai dan atribut lain untuk objek komentar. Inilah yang disebutkan mybatis sebelumnya memiliki fungsi enkapsulasi otomatis. Selama jenis pengembalian disediakan, mybatis akan menggunakan hasil kueri untuk merangkum objek yang sesuai sesuai dengan penilaiannya sendiri. Oleh karena itu, dalam kueri sederhana di atas, jika tidak secara jelas menunjukkan bidang mana yang sesuai dengan ID dan bidang mana yang sesuai dengan judul dalam HasilMap, Mybatis juga akan membantu merangkumnya sesuai dengan penilaiannya sendiri. Penilaian Mybatis sendiri adalah membandingkan bidang kueri atau alias yang sesuai dengan atribut objek pengembalian. Jika cocok dan jenisnya juga cocok, mybatis akan menetapkannya. Atribut blog dikaitkan dalam hasil hasil yang sesuai di atas, dan tipe Java yang sesuai adalah blog. Dalam metode penulisan di atas, objek terkait dikaitkan melalui subqueries, dan tentu saja, itu juga dapat dikaitkan langsung melalui kueri asosiasi. Pada simpul anak asosiasi di atas, atribut properti menunjukkan properti terkait mana adalah jenis pengembalian hasil. Untuk contoh di atas, atribut blog yang dikelola oleh komentar; SELECT menunjukkan peta pilih mana untuk memetakan atribut terkait yang sesuai, yaitu, itu akan meminta peta pilih dengan nilai yang sesuai untuk memilih untuk meminta objek atribut yang terkait; Kolom menunjukkan pasangan nilai kunci yang sesuai dengan HasilMap dengan ID CommentResult. Pasangan nilai kunci ini akan digunakan sebagai parameter untuk subquery dari objek yang terkait, yaitu nilai kueri atribut blog dalam selectComment dilewatkan sebagai parameter ke subquery dari blog objek terkait ke subquery blog objek terkait; Javatype menunjukkan jenis objek terkait saat ini di Java.
Di atas memperkenalkan permintaan hubungan satu-ke-satu atau satu-ke-banyak dalam kasus satu-ke-satu. Dalam aplikasi yang sebenarnya, ada aplikasi lain yang menggunakan lebih sering. Ini untuk mengetahui lebih banyak partai yang sesuai melalui satu-ke-satu. Saat mengeluarkan lebih banyak partai, itu juga perlu mengaitkan satu-ke-satu: saat mengeluarkan objek blog, mengeluarkan semua komentar yang sesuai, dan ketika mengeluarkan komentar, masih perlu mengeluarkan blog yang sesuai, yang diambil di Jawa melalui permintaan.
<!-- From BlogMapper.xml file--><resultMap type="Blog" id="BlogResult"><id column="id" property="id"/><collection property="comments" select="selectCommentsByBlog" column="id" ofType="Comment"></collection></resultMap><resultMap type="Comment" id="CommentResult"><association property="blog" javatype = "blog" kolom = "blog" select = "selectblog"/> </resultMap> <pilih id = "selectblog" parameTerType = "int" resultMap = "blogresult"> select * dari t_blog di mana id = #{id} </select> <pilih id = "selectCoMentSblog" parameTerpy = "int" int "interuleR =" commonde = "comments =" sfectReMentSblog "parameterpy =" int "inter" interpoment = "commonde =" commonde = "comments =" comments = "ParameTrypoment =" ParameTerment = "inter" #{BlogID} </pilih>Masuknya permintaan di atas adalah peta terpilih dengan ID SelectBlog, dan hasil pengembalian adalah HasilMap dengan ID Blogresult. Jenis ID Blogresult adalah blog, yang menentukan atribut dan bidang ID. Menentukan ID akan memiliki efek besar pada konstruksi internal mybatis. Ini terkait dengan objek komentar. Karena sebuah blog dapat memiliki banyak komentar, yang merupakan koleksi, sehingga dipetakan dengan koleksi koleksi. Pilihan masih menunjukkan subquery mana yang dilakukan untuk menanyakan komentar yang sesuai. Kolom berarti nilai bidang mana yang ditemukan di atas diteruskan ke subquery sebagai parameter. Oftype juga mewakili tipe pengembalian. Jenis pengembalian di sini adalah jenis di dalam koleksi. Alasan mengapa ofType digunakan sebagai ganti tipe adalah karena digunakan dalam mybatis untuk membedakannya dari asosiasi asosiasi.
public void selectCommentsByBlogTest () {SQLSession session = util.getSqlSessionFactory (). opensession (); CommentMapper CommentMapper = session.getMapper (commentMapper.class); Daftar <Omment> Comments = CommentMapper.SelectCommentsByBlog (6); untuk (komentar: komentar) System. testSelecTone () {SQLSession session = util.getSqlSessionFactory (). OpenSession (); BlogMapper blogMapper = session.getMapper (blogmapper.class); blog blog = blogmapper.selectBlog (6); daftar <komentar> komentar = blog.getComments (); if (komentar! = null) {comments = komentar = blog.getComments (); if (komentar! = null) {comments = komentar = blog.getComments (); if (komentar! = null) {commentary = komentar = blog.getComments (); if (komentar! = null) {commentary (commentary = blog.getComments (); if (komentar! = null) {for (comment> comment = blog.getComments (); if (komentar! = null) komentar) system.out.println (komentar);} session.close ();}Di atas adalah Hasil dan Hasil PM di mybatis 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!