Foreach terutama digunakan dalam membangun dalam kondisi, dapat mengulangi koleksi dalam pernyataan SQL. Atribut elemen foreach terutama mencakup item, indeks, koleksi, terbuka, pemisah, dan tutup. Item mewakili alias ketika setiap elemen dalam koleksi diulang. Indeks menentukan nama untuk mewakili posisi yang setiap iterasi dicapai selama proses iterasi. Open mewakili apa yang dimulai dengan pernyataan, pemisah mewakili simbol apa yang digunakan sebagai pemisah antara setiap iterasi, dan Close mewakili apa yang diakhiri dengan. Hal yang paling kritis dan paling rawan kesalahan saat menggunakan foreach adalah atribut koleksi. Atribut ini harus ditentukan, tetapi dalam kasus yang berbeda, nilai atribut berbeda. Ada tiga situasi utama:
1. Jika lulus dalam satu parameter dan jenis parameter adalah daftar, nilai atribut koleksi adalah daftar
2. Jika lulus dalam satu parameter dan jenis parameter adalah array, nilai properti koleksi adalah array
3. Jika ada beberapa parameter yang dilewati, kita perlu merangkumnya ke dalam peta. Tentu saja, satu parameter juga dapat dienkapsulasi ke dalam peta. Bahkan, jika Anda lulus dalam parameter, Anda juga akan merangkumnya ke dalam peta di payudara. Kunci peta adalah nama parameter, jadi pada saat ini nilai atribut koleksi adalah kunci dari daftar yang diteruskan atau objek array di peta yang dienkapsulasi dengan sendirinya.
Mari kita lihat contoh kode untuk tiga situasi di atas:
1. Jenis daftar parameter tunggal:
<pilih id = "DynamicForeachTest" resultType = "Blog"> SELECT * Dari t_blog di mana id di <freeach collection = "list" index = "index" item = "item" open = "(" PARATOR = "," close = ")">#{item} </foreach> </pilih>Nilai koleksi di atas adalah daftar, dan mapper yang sesuai seperti ini
Daftar Publik <BOBAN> DYNAMICFOREACHTEST (Daftar <Integer> IDS);
Kode Uji:
@Testpublic void dynamicforeachtest () {sqlsession session = util.getSqlSessionFactory (). Opensession (); blogmapper blogmapper = session.getMapper (blogmapper.class); list <integer> ids = new arraylist <integer> (); ids.add (1) (1) (1) (1; IDS.; 3; IDS. Blog = BlogMapper.DynamicForeachTest (IDS); untuk (blog blog: blog) system.out.println (blog); session.close ();}2. Jenis array parameter tunggal:
<pilih id = "DynamicForeach2Test" resultType = "Blog"> Pilih * dari t_blog di mana id di <freeach collection = "array" index = "index" item = "item" open = "(" pemisah = "," tutup = ")">#{item} </tandingeach> </pilih>Koleksi di atas adalah array, kode mapper yang sesuai:
Daftar Publik <BOBAN> DYNAMICFOREACH2TEST (INT [] IDS);
Kode tes yang sesuai:
@Testpublic void dynamicforeach2test () {sqlsession session = util.getSqlSessionFactory (). Opensession (); blogmapper blogmapper = session.getmapper (blogmapper.class); int [] id = new int [] {1.3,6,9}; Daftar <Blog> Blog = Blog> Blog = Blog> Blog = Blog> Blog = Blog = Blog> BLOGMAPPER <] : blog) system.out.println (blog); session.close ();}3. Encapsulate parameter ke dalam jenis peta sendiri
<pilih id = "DynamicForeach3Test" resultType = "Blog"> Pilih * dari t_blog di mana judul seperti "%"#{title} "%" dan id di <freeach collection = "ids" index = "index" item = "item" open = "(" pemisah = "," close = ")">#{item} </foreach>/parator = "Nilai koleksi di atas adalah ID, yang merupakan kunci dari peta parameter yang dilewati, dan kode mapper yang sesuai:
Daftar Publik <BOBAN> DYNAMICFOREACH3TEST (Peta <String, Object> Params);
Kode tes yang sesuai:
@Testpublic void DynamicForeach3Test () {SQLSession session = util.getSqlSessionFactory (). OpenSession (); BlogMapper BlogMapper = Sesi ArrayList <Integer> (); ids.add (1); ids.add (2); ids.add (3); ids.add (6); ids.add (7); ids.add (9); peta <string, objek> params = hashmap baru <string, object> (); params.put ("ids", IDS); blogmapper.dynamicforeach3test (params); untuk (blog blog: blog) system.out.println (blog); session.close ();}Di atas adalah pengetahuan yang relevan dari penjelasan terperinci dari pernyataan foreach mybatis yang diperkenalkan kepada Anda oleh editor. Saya harap ini akan membantu Anda!