1. Langsung menjalankan kueri SQL:
1. Kutipan dari file Mappers
<resultMap id = "acmodelresultMap" type = "com.izumi.instanceModel"> <hasil kolom = "instanceid" properti = "instanceid" jdbctype = "varchar" /> <hasil kolom = "instancename" properti = "instancename" jdbctype = "varchar" /< /instanceName "Properti =" instancename "jdbctype =" varchar " /" "hasil" ID = "IDPED" JDBCTYPE = "VARCHAR" /< /HRESSENMAP> resultType = "com.izumi.instanceModel"> $ {paramsql} </pilih>2. Kutipan dari DAO
Antarmuka Publik Somedao {List <InstanceModel> getInstanceModel (@param ("paramsql") string sql);}3. Hal -hal yang perlu diperhatikan
3.1: Parameter dari metode yang diteruskan harus mengikuti spesifikasi berikut "Pilih XXX sebagai InstanceId, XXX sebagai Instancename .....", jika tidak MyBatis tidak dapat secara otomatis mengubah hasil kueri menjadi objek Java.
3.2: Perbedaan antara #{} sintaks dan $ {} sintaks dalam file Mappers:
Secara default, sintaks #{} menyebabkan mybatis menghasilkan properti yang disiapkan dan menggunakan parameter yang disiapkan (=?) Untuk mengatur nilainya. Jika Anda ingin secara langsung mengganti string yang tidak berubah ke SQL, Anda dapat menggunakan $ {}.
Dengan kata lain, ketika mybatis melihat #{}, ia akan berpikir bahwa Anda menetapkan nilai ke variabel di SQL, seperti dalam pemrograman JDBC untuk menetapkan nilai ke tanda tanya (misalnya, MyBatis akan menilai jenisnya dan secara otomatis menambahkan kutipan tunggal sebelum dan sesudah). Ketika mybatis melihat $ {}, itu akan langsung menggantinya dengan nilai variabel tanpa melakukan pemrosesan apa pun.
Jadi saat menggunakan $ {}, Anda tidak perlu menulis atribut seperti "jdbctype = varchar" seperti #{}.
3.3: Hasil Hasil dan Hasilmap
Menurut metode penulisan dalam 1, bagian <RancesMap> dapat dihapus tanpa menggunakannya, karena pada <coot Silih> berikutnya, Hasil Hasil yang ditentukan tidak digunakan, tetapi HasilType digunakan.
Jadi kita dapat melihat bahwa ada dua cara untuk menulis definisi nilai pengembalian <CILT>. Salah satunya adalah untuk mendefinisikan hasil hasil dan kemudian merujuk ke hasil ini. Yang lainnya adalah secara langsung menggunakan hasil Hasil untuk menentukan jalur kelas.
2. Penyisipan data batch
1. Pengalaman memberi tahu kita bahwa menggunakan Insert Into Xxx nilai (xx) (xxx) (xxx) lebih efisien daripada menggunakan insert ke dalam nilai xxx (xx), masukkan ke dalam nilai xxx (xxx), masukkan ke dalam nilai xxx (xxx).
2. Penggunaan di Mybatis
2.1. Kutipan dari file pemetaan
<Insert ID = "InsertBatch"> Insert to Student (<incerted refid = "base_column_list" />) nilai <foreach collection = "list" item = "item" index = "index" sparator = ","> (null,#{item.name},#{item.sex},#{item.address} {{{} {{{{{{{{{{{{{{{{{{'{{{{{{{{{{{{{' {{{{{{{{{{{{{))) </tandingeach> </sert>2.2. Kutipan dari DAO
Antarmuka publik Somedao {public void insertBatch (@param ("list") list <sisent> siswa); }Penjelasan terperinci tentang data penyisipan batch mybatis
Pertama -tama lihat file batch mapper.xml
<insert id="insertbatch" parameterType="java.util.List"><selectKey keyProperty="fetchTime" order="BEFORE"resultType="java.lang.String">SELECT CURRENT_TIMESTAMP()</selectKey>insert into kangaiduoyaodian ( depart1, depart2, product_name,generic_name,img, product_specification, Unit, persetujuan_certificate, produsen, marketprice, vipprice, situs web, fetch_time, productDesc) nilai <foreach collection = "list" item = "item" index = "index" puparator = ","> ( #{item.product1}, #{{{{{{{{{{{{{{{{{{{{{{{{{{{{, #, #{item.img}, #{item.productspecification}, #{item.unit}, #{item.approvalCertificate}, #{item.ManTufacturer}, #{item.marketprice}, {{{vipprice}, #{{{{vipprice {{{{{{{{{{{{{{{{{{{, #{{vipprice. ) </tandingeach> </sert>Dalam pemrosesan batch, saya menemukan bahwa ada beberapa masalah yang perlu diperhatikan.
1. Secara otomatis mendapatkan kunci utama. Tambahkan UseGeneratedKeys = "true" keyProperty = "id" di Insert. Dua properti dari dua sifat tidak valid dan dapat mengganggu penyisipan data. Jika ID adalah pembangkangan diri basis data, Anda tidak dapat menulis apa pun. Hapus atribut kunci utama dalam pernyataan yang dimasukkan, dan gunakan.
<sfectKey keyproperty = "id" order = "sebelum" resultType = "java.lang.integer"> Pilih last_insert_id () </selectkey>
CATATAN: Tag <scectKey> hanya dapat ada di Insert; Tidak cocok untuk menggunakan <pilihKey> selama pemrosesan batch. Yang terbaik adalah meningkatkan kunci utama itu sendiri, atau menentukannya.
2. Mendapatkan waktu penyisipan ditunjukkan di atas. Saya menggunakan mysql. Selama itu adalah fungsi MySQL, itu dapat digunakan. Waktu penyisipan dan kunci utama adalah salah satu fungsi MySQL. . .