Dalam pembangunan sebenar, pertanyaan berkaitan satu-ke-banyak dan banyak-ke-banyak Mybatis menggunakan rujukan reultMap, rujukan javaType atau rujukan pilih yang manakah mempunyai prestasi yang lebih baik?
Adakah malas memuatkan dengan pilihan akan meningkatkan kelajuan dan prestasi pertanyaan?
mybatis mempunyai tiga penyelesaian untuk mengendalikan situasi satu-ke-banyak:
Sertai sub-jadual semasa membuat pertanyaan, dan kemudian biarkan mybatis menyusunnya
Jangan sertai sub-jadual semasa membuat pertanyaan, dan mulakan pilihan untuk menangkap data sub-jadual
Serupa dengan yang kedua, kecuali menggunakan
fetchType=lazy
untuk melambatkan masa merangkakTiga pilihan ini masing-masing mempunyai masalah tersendiri:
Penyelesaian pertama mempunyai dua kelemahan: 1) Ia tidak tepat semasa melakukan pertanyaan paging, 2) Jika terdapat banyak sub-jadual yang berkaitan, produk Cartesian akan menjadi sangat besar
Pilihan kedua akan mempunyai 1+N pertanyaan, dan bilangan SQL yang dimulakan akan menjadi sangat menakutkan
Penyelesaian ketiga nampaknya meningkatkan kecekapan pertanyaan pertama, tetapi jika anda mendapat sifat malas dalam gelung, tiada perbezaan daripada penyelesaian kedua
Jadi, jika terdapat keperluan prestasi, kami perlu memasang sendiri koleksi satu-ke-banyak Kaedahnya: kumpulkan ID jadual utama, mulakan pertanyaan sekali untuk menangkap data semua sub-jadual dan. kemudian pemasangan buatan. Bilangan pertanyaan yang dimulakan dengan cara ini ialah 1+1.