Saat menggunakan mybatis sebagai lapisan kegigihan, pernyataan insert default untuk tidak mengembalikan nilai kunci utama catatan, tetapi mengembalikan jumlah catatan yang dimasukkan. Jika lapisan bisnis perlu mendapatkan kunci utama catatan, fungsi ini dapat diselesaikan melalui konfigurasi.
Untuk kunci primer urutan, sebelum menjalankan insert SQL, nilai kunci utama harus ditentukan untuk catatan yang akan dimasukkan, seperti Oracle dan DB2. Metode konfigurasi berikut dapat digunakan:
<masukkan id = "tambahkan" parameTerType = "vo.category"> <selectKey resultType = "java.lang.short" order = "sebelum" keyproperty = "id"> seq_test.nextval dari dual </selectKey> Insert ke dalam kategori (name_zh, parent_id, show_order, delete, dualstatus> Insert ke dalam name_zh, name_zh, parent_id, show_order, delete, dualstatus> Insert ke Name_zh) (#{namezh, jdbctype = varchar},#{parentId, jdbctype = smallint},#{showorder, jdbctype = smallint},#{deletestatus, jdbctype = bit},#{description, jdbctype = varchar}) </insert>Untuk tabel dengan kunci primer pendakian sendiri, tidak ada kunci primer yang diperlukan saat memasukkan, tetapi kunci primer pendakian sendiri secara otomatis diperoleh selama proses penyisipan. Misalnya, MySQL, dua metode konfigurasi berikut dapat diadopsi:
<masukkan id = "tambahkan" parameTerType = "vo.category" useGeneratedKeys = "true" keyproperty = "id"> masukkan ke dalam kategori (name_zh, parent_id, show_order, delete_status, description) nilai (#{Namezh, jdbctype = varchar},#{parentId, jdbctype = smallint},#{showorder, jdbctype = smallint},#{deletestatus, jdbctype = bit},#{description, jdbctype = varchar}) </insert>atau
<masukkan id = "tambahkan" parameTerType = "vo.category"> <selectKey resultType = "java.lang.short" order = "after" keyproperty = "id"> last_insert_id () sebagai id </selectKey> Kategori (name_zh, Parent_id, show_order, delete, deskripsi) deskripsi) deskripsi (name_zh, Parent_id, show_order, delete, descriping) description) deskripsi) Deskripsi) Deskripsi) Deskripsi) Deskripsi) Deskripsi) Deskripsi) Deskripsi) Deskripsi) Deskripsi) Deskripsi) (#{namezh, jdbctype = varchar},#{parentId, jdbctype = smallint},#{showorder, jdbctype = smallint},#{deletestatus, jdbctype = bit},#{description, jdbctype = varchar}) </insert>Setelah operasi penyisipan selesai, atribut ID dari kategori parameter telah ditetapkan
Jika kunci utama dari tabel database bukanlah tipe pendakian diri, maka lapisan aplikasi perlu menghasilkan kunci utama ..... saya tidak akan banyak bicara tentang ini. Teman yang membutuhkannya dapat meninggalkan pesan untuk berkomunikasi ..
Berikut ini adalah metode penulisan untuk Oracle. Oracle tidak memiliki autoincrement, tetapi Currval diimplementasikan dengan pemicu didefinisikan dalam pemicu.
<masukkan id = "masukkan" parameterclass = "profeekIndObject"> <! [cdata [INSERT INTO T_PRO_FEEKIND (KindID, KindName, KindType, Enable) Values (SEQ_T_PRO_FEEKIND_ID.id.NEXTVAL,#KindName#,#KindType#,#enable#)] <"" JAVA. KeyProperty = "KindId"> Pilih SEQ_T_PRO_FEEKIND_ID.CURRVAL as KindId from dual </sfectkey> </sert> <!-Berikut ini adalah metode penulisan untuk mysql-> <!-<sfectKey resultClass = "int" keyproperty = "id"> select @@ ID </PILIT
Kode referensi lainnya:
Saat bertahan objek entitas (seperti menyimpan objek), jika kita tidak menggunakan SelectKey, maka kita tidak akan segera mendapatkan atribut ID dari objek entitas, yaitu, kunci primer tabel data.
Kode Java
Izin izin = izin baru (); izin.set ... permisondao.createPermission (izin); assertnull (izin); Izin izin = izin baru (); izin.set ... permisondao.createPermission (izin); assertnull (izin);
Elemen SelectKey terkait dengan posisinya di elemen induk
<masukkan id = "addpermission" parameterclass = "izin"> <sfectKey resultClass = "int" keyproperty = "izinid"> Pilih seq_p_permission.nextVal dari dual </filihKey> masukkan #permission (nilai permission, permissions #, permisisi #, permisisi #, permisisi #, permission, #PermissionName #, #URL #) </INSERT> <INSERT ID = "addPerMission" ParameterClass = "Izin"> <SelectKey hasil class = "int" keyproperty = "permissionid"> Pilih seq_p_permission.nextval dari ganda </filihKey> dimasukkan ke p_permission seq_psion, permisi, permisi, permisi, permisi, izin, izin permisi, izin, izin, permisi, izin, permisi, izin, izin, permisi, izin, izin, permisi, izin, permisi, izin, izin, permisi, izin, izin, izin, izin, izin permisi, izin, izin permisi, izin, izin permisi, izin dual (#PermissionId#,#izinInfo#,#permissionName#,#permissinename#,#url#) </sert>
Mysql dan sqlserver ada di belakang
Kode XML
<masukkan id = "addpermission" parameterclass = "izin"> masukkan ke p_permission (izinID, izinInfo, izinname, izinname, URL) nilai ( #permissionId #, #permissioninfo #, inter "inter" ipissionSer = " #" URLPLASS (PILIMAN (PILIT ", #" </selectkey> </sert> <masukkan id = "addpermission" parameterclass = "izin"> masukkan ke p_permission (izinID, izinInfo, izinname, nilai nama izin, URL) (#izin,#Pilihan#"Pilihan#" Last_insert_id () </selectkey> </insert>
Ditulis seperti yang di atas, terlalu erat terkait dengan lokasi SelectKey. Elemen terpilih dari file konfigurasi SQLMAP IBATIS memiliki atribut tipe, yang dapat menentukan apakah pra atau posting mewakili generasi sebelum atau setelah generasi.
Untuk Oracle, itu
Kode XML
<insert id="addPermission" parameterClass="Permission"> <selectKey resultClass="int" keyProperty="permissionId" type="pre"> SELECT SEQ_P_PERMISSION.NEXTVAL FROM DUAL </selectKey> INSERT INTO P_PERMISSION ( PERMISSIONID, PERMISSIONINFO, PERMISSIONNAME, PERMISSIONENNAME, URL ) VALUES ( #permissionId#, #permissionInfo#, #PermissionName #, #PermissionName #, #URL #) </Sert> <masukkan id = "addPerMission" parameterclass = "izin"> <sfectKey resultClass = "int" keyproperty = "permissionId" type, pre "> pilih seq_permission.nextval dari ganda </selectKey> ke dalam pe_pission, PERPOISION, PERMISSISION, PERMISSISION, PERMISSISI, PERMISISION, PERMISISION DALAM DUAL </SelectKey> Nilai Nama AMISSISNINEn, URL) (#PermissionID#,#izinInfo#,#permissionName#,#izinname#,#url#) </masukkan>
Mysql, sqlserver, dll. Dinyatakan sebagai:
Kode XML
<insert id="addPermission" parameterClass="Permission"> <selectKey resultClass="int" keyProperty="permissionId" type="post"> SELECT LAST_INSERT_ID() </selectKey> INSERT INTO P_PERMISSION ( PERMISSIONID, PERMISSIONINFO, PERMISSIONNAME, PERMISSIONENNAME, URL ) VALUES ( #permissionId#, #permissionInfo#, #permissionName#, #PermissionName #, #URL #) </INSERT>
Di atas adalah metode mengembalikan kunci utama di mybatis di mybatis yang 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!