Peringatan mesej diteruskan, mesej ini mungkin orang lain membalas terus artikel anda Pada masa ini, anda perlu melakukan operasi pangkalan data untuk mengaitkan jadual artikel untuk mendapatkan kandungan artikel yang sepadan [Peringatan mesej: Terdapat balasan baharu. kepada artikel anda xxx], atau mungkin orang lain Selepas membalas ulasan anda, borang ulasan dikaitkan untuk mendapatkan kandungan ulasan [Peringatan mesej: Terdapat balasan baru untuk ulasan anda xxx]. mesej, butiran akan muncul seperti ini.
Struktur jadual pangkalan data adalah seperti berikut
mbelongbid ialah id artikel yang menjadi milik mesej, dan mbelongcid ialah id ulasan yang menjadi milik mesej.
Apabila mbelongcid kosong, bermakna mesej itu adalah balasan terus kepada artikel, dan jadual artikel dikaitkan pada masa ini
Apabila mbelongcid tidak kosong, ia bermakna objek balasan mesej adalah komen tertentu, dan jadual ulasan dikaitkan pada masa ini.
Bagaimana untuk menulis pernyataan SQL untuk memenuhi keperluan ini?
Pemikiran semasa saya ialah:
pilih
r.*, `blog`.btitle `comment`.ccontent
dari
(
select mid, mreferuid, mbelongbid, mbelongcid from message where mid = #{_parameter}
)r,
`blog` where r.mbelongbid = `blog`.bid
`comment` where r.mbelongcid = `comment`.cid
Terdapat masalah dengan menulisnya secara langsung seperti ini. Idea umum adalah untuk mengaitkan jadual yang berbeza untuk mendapatkan medan yang berbeza berdasarkan sama ada mbelongcid adalah nol.
mbelongcid bukan sebahagian daripada parameter yang anda luluskan, jadi mybatis tidak tahu sama ada ia batal! , jika anda ingin merealisasikan logik yang anda inginkan, anda harus bermula dari sisi pangkalan data, seperti mencipta pandangan, yang terdiri daripada penyatuan dua pertanyaan.
Apabila anda menghadapi sintaks pelik seperti ini semasa menulis program, sila semak pelan reka bentuk dahulu.
Siapa yang mereka bentuk helaian data? Sekurang-kurangnya tambahkan garis bawah semasa menolak gaji, ahli parti pelajar, ambil masa anda.
Projek kami menggunakan SQL beranotasi Apabila menghadapi situasi sedemikian, kami terus menggunakan SQL dalam Penyedia untuk menyelesaikan masalah.
Pernyataan dalam bahagian MessageMapper.xml ini adalah seperti berikut:
kelas mesej adalah seperti berikut: