Sebagian besar pengembang yang menggunakan mybatis akan menghadapi masalah, yaitu menulis sejumlah besar SQL dalam file XML. Selain SQL Logika Bisnis Khusus, ada juga sejumlah besar SQL dengan struktur yang sama. Selain itu, ketika struktur tabel basis data berubah, semua kelas SQL dan entitas yang sesuai perlu diubah. Dampak dari beban kerja dan efisiensi ini dapat menjadi penghalang antara menambah, menghapus, memodifikasi dan memeriksa programmer dan pemrogram nyata. Pada saat ini, mapper umum muncul ...
Apa itu mapper universal
General Mapper adalah plug-in berdasarkan mybatis untuk menyelesaikan masalah penambahan, menghapus, memodifikasi, dan mencari tabel tunggal. Pengembang tidak perlu menulis SQL atau menambahkan metode ke DAO. Selama mereka menulis kelas entitas dengan baik, mereka dapat mendukung metode yang sesuai untuk menambah, menghapus, memodifikasi, dan mencari.
Cara menggunakan
Mengambil MySQL sebagai contoh, anggaplah ada tabel seperti itu:
CREATE TABLE `test_table` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT '', `create_time` datetime DEFAULT NULL, `create_user_id` varchar(32) DEFAULT NULL, `update_time` datetime DEFAULT NULL, `update_user_id` varchar(32) DEFAULT NULL, `is_delete` int (8) default null, kunci utama (` id`)) engine = innodb auto_increment = 1 charset default = utf8;
Kunci utama adalah ID, yang meningkat dengan sendirinya. Berikut adalah tabel sebagai contoh untuk memperkenalkan cara menggunakan mapper universal.
Ketergantungan Maven
<!-General mapper-> <dependency> <GroupId> tk.mybatis </proupid> <ArtifactId> mapper </artifactid> <version> 3.3.9 </version> </dependency>
Konfigurasi SpringMVC
<!-Mapper Umum-> <beansclass = "tk.mybatis.spring.mapper.mapperscannerConfigurer"> <propertiName = "Basepackage" value = "cn.com.bluemoon.bd.service.spider.dao"/> <so propertyname = "MOLEOM.MAPPER.SPIDER. </value> </propt> </tac>
Perhatikan bahwa tk.mybatis.spring.mapper.MapperScannerConfigure digunakan di sini untuk menggantikan mybatis org.mybatis.spring.mapper.MapperScannerConfigurer yang asli.
Parameter Tersedia:
Dalam kebanyakan kasus, parameter ini tidak akan digunakan, dan Anda dapat mempelajarinya sendiri jika Anda memiliki keadaan khusus.
Bagaimana menulis entitas
Ingat satu prinsip: Jumlah bidang di kelas entitas> = jumlah bidang yang perlu dioperasikan dalam tabel database. Secara default, semua bidang di kelas entitas dioperasikan sebagai bidang dalam tabel, dan jika ada bidang tambahan, anotasi @Transient harus ditambahkan.
@Table (name = "test_table") kelas publik testTableVoImplements Serializable {private static final long serialversionuid = 1l; @Id @GeneratedValue (generator = "jdbc") Private Long ID; @Transient private string userId; nama string pribadi; CreatTime cap waktu pribadi; Private String CreateUserID; pembaruan waktu privat; Private String UpdateUserId; Private Integer IsDelete; // hilangkan get, atur ...}menjelaskan:
Cara Menulis Dao
Dalam penulisan mybatis tradisional, antarmuka DAO perlu dikaitkan dengan file mapper, yaitu, SQL perlu ditulis untuk mengimplementasikan metode dalam antarmuka DAO. Secara umum Mapper, DAO hanya perlu mewarisi antarmuka umum untuk memiliki metode yang kaya:
Mewarisi mapper generik, obat generik harus ditentukan
antarmuka publik testTableDaoextends mapper <TestTableVo> {}Setelah Anda mewarisi mapper, mapper yang diwariskan memiliki semua metode umum mapper:
Memilih
Metode: Daftar <T> SELECT (T RECORD);
Catatan: Kueri berdasarkan nilai atribut di entitas, dan gunakan tanda yang sama untuk kondisi kueri
Metode: t selectbyprimarykey (kunci objek);
Catatan: Kueri berdasarkan bidang kunci utama. Parameter metode harus berisi atribut kunci primer lengkap. Kondisi kueri menggunakan tanda -tanda yang sama.
Metode: Daftar <T> selectAll ();
Catatan: Permintaan semua hasil, metode Select (null) dapat mencapai efek yang sama
Metode: t selecterone (rekaman t);
Catatan: Meminta sesuai dengan properti di entitas, hanya ada satu nilai pengembalian, dan banyak hasil dilemparkan. Kondisi kueri menggunakan tanda -tanda yang sama.
Metode: int selectCount (T Record);
Catatan: Permintaan Jumlah total atribut dalam entitas, dan gunakan tanda yang sama untuk kondisi kueri.
Menyisipkan
Metode: Insert int (catatan T);
Catatan: Simpan entitas, atribut null juga akan disimpan, dan nilai default database tidak akan digunakan.
Metode: int insertSelective (T Record);
Catatan: Simpan entitas, atribut null tidak akan disimpan, dan nilai default database akan digunakan.
Memperbarui
Metode: int updateByPrimaryKey (T RECORD);
Catatan: Perbarui semua bidang entitas sesuai dengan kunci utama, nilai nol akan diperbarui
Metode: int updateByPrimaryKeySelective (T Record);
Deskripsi: Perbarui Nilai yang atributnya tidak nol sesuai dengan kunci utama
Menghapus
Metode: int delete (T Record);
CATATAN: Hapus menurut atribut entitas sebagai kondisi, gunakan tanda -tanda yang sama untuk kondisi kueri
Metode: int deleteByPrimaryKey (kunci objek);
Catatan: Hapus Menurut bidang kunci utama, parameter metode harus berisi atribut kunci primer lengkap
Metode contoh
Metode: Daftar <T> SelectByExample (Contoh Objek);
Deskripsi: Permintaan Menurut contoh kondisi
Titik kunci: Kueri ini mendukung kolom kueri yang menentukan melalui kelas contoh dan menentukan kolom kueri melalui metode SelectProperties.
Metode: int selectCountByExample (contoh objek);
Deskripsi: Permintaan jumlah total sesuai dengan kondisi contoh
Metode: int updateByExample (@param ("Record") T Record, @param ("Contoh") Contoh objek);
Catatan: Perbarui semua properti yang terkandung dalam catatan entitas sesuai dengan kondisi contoh, dan nilai nol akan diperbarui.
Metode: int updateByExplampselective (@param ("Record") T Record, @param ("Contoh") Contoh objek);
Deskripsi: Memperbarui catatan entitas sesuai dengan contoh kondisi berisi nilai properti yang bukan nol
Metode: int deleteByExample (contoh objek);
Deskripsi: Hapus data sesuai dengan contoh kondisi
Digunakan dalam kode
Menyuntikkan DAO dalam layanan dan siap digunakan.
@AutowiredPrivate testtabledao testtabledao;
Berikut ini adalah cara menulis umum:
Baru
Testtablevo vo = new testtablevo (); // hilangkan properti pengaturan untuk vo ... int row = testtabledao.insertselective (vo);
Merevisi
Testtablevo vo = new testtablevo (); // hilangkan properti pengaturan untuk vo ... int row = testtabledao.updatebyprimarykeyselective (vo);
Meminta satu
Testtablevo vo = new testtablevo (); vo.setid (123L); testtablevo result = testtabledao.selectone (vo);
Kueri bersyarat
// Buat Contoh Contoh Contoh = Contoh Baru (testTableVo.class); // Buat criteriaExample.criteria criteria = example.createCriteria (); // Tambahkan kondisi kondisi. testtabledao.selectbyexample (contoh);
Meringkaskan
Prinsip Mapper Umum adalah untuk mendapatkan informasi kelas entitas melalui refleksi dan membangun SQL yang sesuai. Oleh karena itu, kita hanya perlu mempertahankan kelas entitas, yang memberikan kenyamanan besar untuk mengatasi kebutuhan yang kompleks dan berubah. Deskripsi di atas hanyalah penggunaan sederhana Mapper Umum. Dalam proyek aktual, kita masih harus merangkum metode yang lebih besar, lebih umum dan digunakan lebih baik berdasarkan mapper umum berdasarkan bisnis.
Dengan konfigurasi boot pegas
Maven
<!--mybatis--><dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.1</version></dependency><!--mapper--><dependency> <groupId>tk.mybatis</groupId> <ArTifactId> mapper-spring-boot-starter </artifactid> <version> 1.1.4 </version> </gandendency>
Application.properties Konfigurasi
#mapper#pemetaan koma terpisah mappper.mappers = tk.mybatis.mapper.common.mappermapper.not-empty = falsemapper.identity = mysql
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.