Saat belajar Hibernate, editor telah terpapar berbagai pemetaan. Bagaimana cara pemetaan di mybatis bekerja? Dalam posting blog ini hari ini, editor sebagian besar akan memperkenalkan pemetaan lanjutan di Mybatis, termasuk satu-ke-satu, satu-ke-banyak, dan banyak-ke-banyak. Saya berharap bahwa semakin banyak teman yang membutuhkan akan membantu. Editor terutama memperkenalkan model data produk pesanan, permintaan satu-ke-satu, permintaan satu-ke-banyak, dan banyak pertanyaan.
1. Memesan model data produk
1. Skrip Eksekusi Database adalah sebagai berikut:
<span style="font-family:Comic Sans MS;font-size:18px;">CREATE TABLE items ( id INT NOT NULL AUTO_INCREMENT, itemsname VARCHAR(32) NOT NULL COMMENT 'Product name', price FLOAT(10,1) NOT NULL COMMENT 'Product price', detail TEXT COMMENT 'Product description', pic VARCHAR(64) DEFAULT NULL COMMENT 'Product picture', createtime DATETIME NOT NULL COMMENT 'Production date', Kunci primer (id)) Charset default = utf8; / *Struktur Tabel untuk Tabel `orderDetail` */ Buat tabel orderDetail (id int not null auto_increment, orders_id int nol komentar 'order id', items_id int null komentar 'id produk', items_num int default null comment 'kuantitas pembelian produk'), order` `` `` `` `` `` ` `Fk_orderdetail_2` (` items_id`), kendala `fk_orderdetail_1` kunci asing (` orders_id`) referensi `orders` (` id`) pada penghapusan tidak ada tindakan pembaruan, pembatasan `fk_orderdetail_2` Kunci asing (` iD `` `IDE (` IDE (`IDEFE NO ON ACTION`) Charset = utf8; / *Struktur tabel untuk tabel `pesanan` */ buat pesanan tabel (id int not null auto_increment, user_id int not null komentar 'order id', angka varchar (30) bukan komentar null 'nomor pesanan', createTime datetime not null comment 'buat waktu pesanan', note varchar (100) default nol komentar 'note',` `` `` `` `` `` `` `` `` `` `` `not` `not` `not` `not` not `` not `` not ` Batasan `fk_orders_id` Key asing (` user_id`) Referensi `t_user` (` id`) di Hapus Tidak ada tindakan pada pembaruan tidak ada tindakan) charset default = utf8; /*Table structure for table `t_user` */ CREATE TABLE t_user ( id INT NOT NULL AUTO_INCREMENT, username VARCHAR(32) NOT NULL COMMENT 'User name', birthday DATE DEFAULT NULL COMMENT 'Birthday', sex CHAR(1) DEFAULT NULL COMMENT 'Gender', address VARCHAR(256) DEFAULT NULL COMMENT 'Address', PRIMARY KEY (`id`) ) DEFAULT CHARSET=utf8; </span>
Kode data uji
<span style="font-family:Comic Sans MS;font-size:18px;">/*Data for the table `items` */ INSERT INTO items(itemsname,price,detail,pic,createtime) VALUES ('Desktop',3000.0,'This computer is of great quality!',NULL,'2015-07-07 13:28:53'), ('Notebook', 6000.0, 'notebook', kinerja bagus, kualitas bagus! ', Null,' 2015-07-08 13:22:57 '), (' ransel ', 200.0,' ransel bermerek kelas, kapasitas tinggi dan kualitas yang baik! ', Null,' 2015-07-010 13:25:02 ');' / *Data untuk tabel `orderDetail` */ masukkan ke` ordeDetail` (`orders_id`,` items_id`, `items_num`) nilai (1,1,1), (1,2,3), (2,3,4), (3,2,3); / *Data untuk tabel `orders` */ masukkan ke` orders` (`user_id`,` number`, `createTime`,` note`) (1, '1000010', '2015-06-04 13: 22: 35', null), (1, '1000011', '2015-07-08 13: Null), (1,' 1000011 ',' Null), (1, '1000011', 'NULL), (1,' NULL), (1, '10011, (2, '1000012', '2015-07-17 14: 13: 23', null), (3, '1000012', '2015-07-16 18: 13: 23', null), (4, '1000012', '2015-07-15 19: 13: 23', Null), (5, '' 1000012: '2012:' 2012: '2015:' 2015: '2015-07-15), NULL), (5,' 100012, ' (6, '1000012', '2015-07-13 16: 13: 23', null); / *Data untuk tabel `user` */ masukkan ke` t_user` (`username`,` ulang tahun`, `sex`,` address`) nilai ('wang wu', null, '2', null), ('zhang san', '2014-07-10', '1', 'zhang san', '2014-07-10', '1', 'beijing'), ('zhang'), ('zhang'), ('zhang'), 'zhang') Xiaoming ', null,' 1 ',' zhengzhou, henan '), (' chen xiaoming ', null,' 1 ',' zhengzhou, henan '), (' zhang sanfeng ', null,' 1 ',' zhengzoU, henan '), (' zhang sanfeng '),' zhengzoU, henan '), (' zhang sanfeng '),' zhengzoU, henan '), (' zhang sanfeng '),' zhengzoU, henan '), (' Zhang Sanfeng '), zhengzoU,' 1, '1,' 1, '1,' 1, '1,' 1, '1,' 1, '1,' 1, '1,' 1, '1,' 1, '1,' 1, '1,' 1, '1,' 1, ('Chen xiaoming', null, '1', 'zhengzhou, henan'), ('wang wu', null, null, null), ('xiao a', '2015-06-27', '2', 'beijing'), ('xiao b', '2015-06', '' 27 ',' '(' xiao ',' 2015-06 ',' '(' ('(' Xiao ',' ('(' ('xia', '2,' 2, '(' xia ', C ',' 2015-06-27 ',' 1 ',' Beijing '), (' Xiao d ',' 2015-06-27 ',' 2 ',' Beijing '); </span>2. Ide Analisis Model Data
(1). Konten data yang direkam dalam setiap tabel: membiasakan diri dengan konten yang dicatat di setiap tabel dalam modul, yang setara dengan proses persyaratan sistem pembelajaran (fungsi);
(2). Pengaturan lapangan penting untuk setiap tabel: bidang yang tidak kosong, bidang kunci asing;
(3). Hubungan antara tabel dan tabel tingkat basis data: hubungan kunci asing;
(4). Hubungan Bisnis Antara Tabel: Saat menganalisis hubungan bisnis antara tabel, itu harus didasarkan pada signifikansi bisnis tertentu untuk dianalisis.
3. Analisis ide basis data untuk model produk pesanan, seperti yang ditunjukkan pada gambar di bawah ini:
2. Kueri satu-ke-satu
2.1. Persyaratan: Informasi Pesanan Permintaan, dan Informasi Pengguna Asosiasi
2.2. Implementasi Hasil
2.2.1 Pernyataan SQL
Tentukan tabel utama kueri: tabel pesanan, tentukan tabel asosiasi kueri, tabel pengguna, kode adalah sebagai berikut:
<span style = "font-family: comic sans ms; font-size: 18px;"> pilih t1.*, t2.username, t2.sex, t2.address dari pesanan t1, t_user t2 di mana t1.user_id = t2.id </span>
2.2.2 Buat entitas entitas
Pengguna Entity User.java, kodenya adalah sebagai berikut:
<span style = "font-family: comic sans ms; font-size: 18px;"> package com.mybatis.entity; impor java.util.date; impor java.util.list; / ** * @className: pengguna * @description: toDo (entitas pengguna) * @author ahvari */ pengguna kelas publik {private integer id; // Sebutkan nama pengguna String Pribadi; // jenis kelamin gender pribadi seks; // alamat alamat string pribadi; // ulang tahun kencan pribadi ulang tahun; // Daftar Privat Pesanan yang Diciptakan Pengguna <disters> Daftar Pesan; // Getter and Setter ......} </span>Pesanan entitas pesanan.java
<span style = "font-family: comic sans ms; font-size: 18px;"> package com.mybatis.entity; impor java.util.date; impor java.util.list; / *** @className: pesanan* @description: todo (entitas pesanan)* @author ahvari*/ pesanan kelas publik {/ ** ID pesanan kunci utama*/ id integer pribadi; / ** Pesan ID Pengguna*/ Private Integer UserID; / ** Nomor Pesanan*/ Nomor String Pribadi; / ** Waktu pesanan*/ kreatetime tanggal pribadi; / ** Catatan*/ Catatan String Privat; // informasi pengguna pengguna pengguna pribadi; // Detail Pesan Daftar Pribadi <FertionDetail> OrderDetails; // Getter and Setter ......} </span>Entitas Produk: Item.java
<span style = "font-family: comic sans ms; font-size: 18px;"> package com.mybatis.entity; impor java.util.date; / *** @ClassName: Item* @Description: TODO (Kelas Entitas Produk)* @Author Ding Guohua*/ Item Kelas Publik {/ ** Tabel Produk ID Kunci Utama*/ ID Integer Pribadi; / ** Nama Produk*/ Private String ItemsName; / ** Harga produk*/ harga pelampung pribadi; / ** Deskripsi Produk*/ Detail String Pribadi; / ** gambar produk*/ gambar string pribadi; / ** Tanggal Produksi*/ Tanggal Pribadi CreateTime; // Getter and Setter ......} </span>Pesanan detail entitas ordeDetail.java
<span style = "font-family: comic sans ms; font-size: 18px;"> package com.mybatis.entity; / *** @ClassName: orderDetail* @description: TODO (entitas detail pesanan)* @author ding guohua*/ kelas publik orderDetail {/ ** utama, detail daftar id*/ id integer privat; / ** ID*/ Private Integer OrdersId; / ** ID Produk*/ Item Integer Pribadi; / ** Jumlah Pembelian Produk*/ Private Integer ItemsNum; // informasi produk yang sesuai dengan detail item item pribadi; // Getter and Setter ......} </span>Buat kelas pembungkus untuk memetakan semua informasi kueri ke kelas ini orderscustom.java
<span style = "Font-family: Comic sans MS; font-size: 18px;">/ ** * @classname: orderscustom * @description: todo (Kelas pesanan yang diperluas, yang memetakan pesanan dan orde order order ordery untuk mengarahkan class ordery. atribut nama pengguna string pribadi; seks string pribadi; alamat string pribadi; // Getter and Setter ......} </span>
2.2.3 Buat ordersccustommapper.java, kodenya adalah sebagai berikut:
<span style = "Font-family: Comic sans MS; font-size: 18px;"> Paket com.mybatis.mapper; impor java.util.list; impor com.mybatis.entity.orderscustom; / *** @className: ordersmappercustom* @description: todo (ordersmappercertom mapper)* @author ding guohua*/ antarmuka publik pesanancustommapper {/ ** pesanan kueri, informasi pengguna kueri*/ daftar publik <orderscustom> findorderser (); } </span>2.2.4 Membuat orderscustommapper.xml sama dengan nama antarmuka yang sesuai di atasnya. Saat memuat file konfigurasi melalui antarmuka mapper, kode adalah sebagai berikut:
<span style = "font-family: comic sans ms; font-size: 18px;"> <? xml version = "1.0" encoding = "UTF-8"?> <! Doctype mapper public "-// mybatis.org//dtd mapper 3.0 // en" "http://dtd mapper 3.0 // en" "http:/Mapper <!-Namespace namespace, fungsinya adalah untuk mengklasifikasikan manajemen SQL, yang dipahami sebagai SQL Isolation Note: Saat menggunakan pengembangan agen mapper, namespace memiliki fungsi khusus, namespace sama dengan alamat antarmuka mapper-<mapper namespace = "com.mybatis.mapper.orderscoMmper"> <! id = "findordersuser" resultType = "com.mybatis.entity.orderscustom"> pilih t1.*, t2.username, t2.sex, t2.address dari pesanan t1, t_user t2 di mana t1.user_id = t2.id </pilih> </mapper> </span>
2.3 Implementasi Hasil
2.3.1 Pernyataan SQL Sama seperti di atas
2.3.2 Ide Pemetaan Hasil:
Gunakan Hasil Hasil untuk memetakan informasi pesanan dalam hasil kueri ke objek pesanan, tambahkan atribut pengguna di kelas pesanan, dan memetakan informasi pengguna kueri yang terkait ke atribut pengguna di objek pesanan (telah ditambahkan dalam entitas pesanan di atas).
2.3.3 orderscustommapper.xml
1. Tentukan HasilMap, kodenya adalah sebagai berikut:
<span style = "font-family: comic sans ms; font-size: 18px;"> <!-Tentukan groulmap dari orde kueri pengguna terkait, peta seluruh hasil kueri ke com.mybatis.entity.orders-<orderryrerer "com.mybatis.entity.orders" id = "ordererrerer" maPing "com.mybatis.entity.orders" id = "ordererrererer" maPing "mym.mybatis.entity. Pengidentifikasi unik di kolom kueri, pengidentifikasi unik dalam informasi pesanan. If multiple columns form a unique identifier (such as: the dictionary table in general database design uses a joint primary key), multiple ids need to be configured column: Unique identification column for order information property: The attribute mapped to the order information by the unique identification column for order information (if: the primary key in the orders table in the database is orders_id, and the entity attribute name is ordersId, then this configuration should be <id kolom = "orders_id" properti = "ordersId"/>, mirip dengan konfigurasi file pemetaan entitas hibernate). --> <id column="id" property="id"/> <result column="user_id" property="userid"/> <result column="number" property="number"/> <result column="createtime" property="createTime"/> <result column="note" property="note"/> <result column="note"/> <result column="note" property="note"/> <!-- Configure mapped associated user information --> <!-- Asosiasi: Informasi yang digunakan untuk memetakan kueri terkait Properti Objek Tunggal: Untuk memetakan informasi pengguna dari kueri yang terkait dengan properti mana dalam pesanan-> <asosiasi properti = "pengguna" javatype = "com.mybatis.entity.user"> <!-ID: Properti unik = "Pengguna Kolom Pengguna-Tentukan Kolom yang unik mengidentifikasi Properti Informasi Pengguna: The Pengguna Pengguna-Pengguna yang Disediakan Kolom Pengguna-Tentukan Kolom yang Unik Mengidentifikasi Informasi Pengguna: The ID Properti: The Pengguna Pengguna-Pengguna Pengguna-Pengguna Pengguna yang mengidentifikasi Properti Informasi Pengguna:" Pengguna Pengguna-Pengguna-Pengguna Pengguna yang mengidentifikasi Properti Pengguna: "Pengguna Pengguna," ID User Properti, "ID User Properti," ID User Properti, "ID User: <hasil kolom = "username" properti = "nama pengguna"/> <hasil kolom = "sex" properti = "sex"/> <colom hasil = "alamat" properti = "alamat"/> </asosiasi> </resultMap> </span>
2. Definisi Pernyataan, kodenya adalah sebagai berikut:
<span style = "font-family: comic sans ms; font-size: 18px;"> <!-pesanan kueri, associate kueri informasi pengguna, gunakan hasil hasil untuk mengimplementasikan-> <pilih id = "findordersuserresultMap" t2, t12.adser. t1.user_id = t2.id </select> </span>
3. Tambahkan metode berikut ke antarmuka OrderCustommapper.java:
<span style = "Font-family: Comic sans MS; font-size: 18px;">/ ** Query Order Association Informasi Pengguna, Gunakan ReslutMap untuk mengimplementasikan*/ Daftar Publik <FORDERS> FindORDERSUSERRESULTMAP (); </span>
4. Tes JUnit dari Hasil Hasil dan Implementasi Hasil, Kode ini adalah sebagai berikut:
<span style = "Font-family: Comic sans MS; font-size: 18px;"> Paket com.mybatis.test; impor java.io.inputstream; impor java.util.list; impor org.apache.ibatis.io.Resources; impor org.apache.ibatis.Session.SQLSessionFactory; impor org.apache.ibatis.Session.SQLSessionFactoryBuilder; Impor org.junit. Before; impor org.junit.test; impor com.mybatis.entity.orders; impor com.mybatis.entity.orderscustom; impor com.mybatis.mapper.orderscustommapper; PUBLIK PUBLIK PESANCUSTOMPERTEST {private SQLSESSIONFACTORY SQLSESSIONFACTORY; // Metode ini adalah mengeksekusi @Before public void setup () melempar Exception {String Resource = "sqlmapconfig.xml"; InputStream inputStream = Resources.getResourceAsstream (sumber daya); // Buat SQLSessionFcatory SQLSessionFactory = baru SQLSessionFactoryBuilder (). Build (InputStream); } // kueri pesanan, kaitkan informasi pengguna kueri, dan gunakan resultType untuk menguji @test public void testFindordersUser () {sqlsession sqlsession = sqlSessionFactory.opensession (); // Buat Objek Proxy OrdersCustommapper OC = sqlSession.getMapper (orderscustommapper.class); // Daftar metode mapper Call <deserscustom> Daftar = oc.findordersUser (); System.out.println (daftar); sqlsession.close (); } // kueri pesanan, kaitkan informasi pengguna kueri, dan tes yang diimplementasikan menggunakan resultMap @test public void testFindordersUserResultMap () {sqlsession sqlsession = sqlSessionFactory.opensession (); // Buat Objek Proxy OrdersCustommapper OC = sqlSession.getMapper (orderscustommapper.class); // Daftar Metode Mapper Call <Orders> Daftar = OC.FindordersUserResultMap (); System.out.println (daftar); sqlsession.close (); }} </span>5. Hasil Hasil dan Hasil Map Menerapkan ringkasan kueri satu-ke-satu
Menerapkan kueri satu-ke-satu:
A.ResultType: Relatif mudah diimplementasikan menggunakan HasilType. Jika nama kolom kueri tidak termasuk dalam POJO, Anda perlu menambahkan atribut yang sesuai dari nama kolom untuk menyelesaikan pemetaan.
B. Jika tidak ada persyaratan khusus untuk hasil kueri, disarankan untuk menggunakan HasilType.
C.ResultMap: Hasilnya perlu didefinisikan secara terpisah, yang sedikit merepotkan. Jika ada persyaratan khusus untuk hasil kueri, menggunakan RACKMAP dapat menyelesaikan atribut POJO pemetaan kueri terkait.
D.ResultMap dapat mengimplementasikan pemuatan malas, Hasil Hasil tidak dapat mengimplementasikan pemuatan malas.
3. Kueri satu-ke-banyak
3.1 Persyaratan: Pesanan kueri (pengguna terkait) dan detail pesanan;
3.2 Tambahkan Daftar <OrderDetail> Properti OrderDetails di kelas pesanan.java (entitas di atas telah ditambahkan). Akhirnya, informasi pesanan akan dipetakan ke dalam pesanan, dan rincian pesanan yang sesuai dengan pesanan dipetakan ke properti pesanan yang dipesan dalam pesanan.
3.3 Tambahkan yang berikut di Orderscustommapper.xml
<span style = "font-family: comic sans ms; font-size: 18px;"> <!-Query Order Association Association Query User and Order Detail-> <pilih id = "findordersanderDetailResultMap" resultMap = "ordersanderDetailResultMap"> Select t1.*, t2.usname, "t2.s2.detail, 2.details, T2. t3.items_id, t3.items_num, t3.orders_id dari pesanan t1, t_user t2, orderDetail t3 di mana t1.user_id = t2.id dan t3.orders_id = t1.id </pilih> </span>
Definisi HRESSMAP juga ditambahkan ke Orderscustommapper.xml
<span style="font-family:Comic Sans MS;font-size:18px;"><!-- resultMap for querying orders (associated users) and order details --> <resultMap type="com.mybatis.entity.Orders" id="ordersAndOrderDetailResultMap" extends="OrdersUserResultMap"> <!-- Order information--> <!-- Associated user information--> <!-- Gunakan Extends Warisan, jangan konfigurasikan pemetaan informasi pesanan dan informasi pengguna di dalamnya-> <!-Informasi detail pesanan terkait Satu kueri Asosiasi Pesanan memiliki beberapa detail pesanan. Anda perlu menggunakan Koleksi Pemetaan Koleksi: Peta beberapa catatan yang ditanyai di properti Association ke properti koleksi OfType: Tentukan jenis pojo di properti koleksi yang dipetakan-> <collection properti = "orderDetails" ofType = "com.mybatis.entity.entity-orderdetail"> <!-id: Properti identifikasi unik: untuk memetakan detail unik dari detail unik dari detail unik. <id kolom = "orderDetail_id" properti = "id"/> <hasil kolom = "items_id" properti = "itemsid"/> <column hasil = "items_num" properti = "itemsnum"/> <column hasil = "orders_id" properti = "ordersid"/> </collection> </resultMap> </span>
3.4 Tambahkan metode ke kelas antarmuka OrderCustomemapper.java, kodenya adalah sebagai berikut:
<span style = "Font-family: Comic sans MS; font-size: 18px;">/ ** Urutan kueri (pengguna terkait) dan detail pesanan*/ Daftar Publik <FertionDetail> findordersandorderDetailResultMap (); </span>
3.5 Tambahkan metode tes ke kelas tes jUnit, kodenya adalah sebagai berikut:
<span style = "font-family: comic sans ms; font-size: 18px;"> // tes untuk pesanan kueri (pengguna terkait) dan detail pesanan @test public void testfindordersanderDerDetailResultMap () {sqlsession sqlsession = sqlSessionFactory.opensession (); // Buat Objek Proxy OrdersCustommapper OC = sqlSession.getMapper (orderscustommapper.class); // Daftar Metode Mapper Hubungi <FertionDetail> DAFTAR = OC.FINDORDERSANDDERDETAILRESULTMAP (); System.out.println (daftar); sqlsession.close (); } </span>3.6 Ringkasan
MyBatis menggunakan koleksi RACKMAP untuk memetakan beberapa catatan kueri terkait ke dalam properti koleksi daftar. Implementasi Menggunakan HasilType: Detail pesanan peta ke dalam pesanan pesanan dalam pesanan, yang perlu diproses sendiri, menggunakan traversal loop ganda, menghapus catatan duplikat, dan menempatkan rincian pesanan di pesanan.
4. Kueri banyak-ke-banyak
4.1 Persyaratan: Permintaan pengguna dan informasi produk yang dibeli oleh pengguna
4.2 Ide Pemetaan
Peta Informasi Pengguna ke Pengguna, Tambahkan Daftar Atribut Daftar Pesanan <dister> Daftar PESAN di kelas pengguna untuk memetakan daftar pesanan; Tambahkan Daftar Detail Pesanan Daftar Atribut Daftar <OrderDetail> OrderDetials dalam Pesanan, Peta detail pesanan ke OrderDetials; Tambahkan atribut item di OrderDetail untuk memetakan item yang sesuai dengan detail pesanan ke item.
4.3 Orderscustommapper.xml menambahkan kode berikut:
<span style = "font-family: comic sans ms; font-size: 18px;"> <!-resultMap untuk menanyakan informasi produk yang dibeli oleh pengguna-> <resultMap type = "com.mybatis.entity.user" id = "userAndItemResultMap"> <!-Informasi pengguna-iD "ID" ID = "UserAndItemResultMap"> <!-Informasi Pengguna-Id "ID" ID = "UserAndItemResUntMap"> <!-Informasi Pengguna-Id "ID" ID = "UserAndItemResUntMap"> <!-Informasi Pengguna-> <ID "" "" "" ID "/ID"/ID "/ID"/ID "/ID" ID "ID" ID "ID" ID "ID" ID "ID" Properti = "Nama Pengguna"/> <kolom hasil = "seks" properti = "sex"/> <hasil kolom = "alamat" properti = "alamat"/> <!-Pesanan informasi Pengguna sesuai dengan beberapa pesanan, menggunakan pemetaan koleksi-> <collection properti = "orderslist" properti = "colume =" com. " <Kolom hasil = "nomor" properti = "angka"/> <hasil kolom = "createTime" properti = "createTime"/> <colom hasil = "note" properti = "note"/> <column = "note"/> <colom hasil = "note" property = "note"/<!-detail pesanan satu detail-> <collection properti = "orderdetails" <"com. kolom = "property orderDetail_id" = "id"/> <column hasil = "items_id" properti = "itemsid"/> <hasil kolom = "items_num" properti = "itemsnum"/> <column hasil = "orders_id" properti = "hasil"/> <sementseMer = "items_name" properti = "itemsname"/<ordersId "/> <sements column =" items_name "properti =" itemSname "//<" hasil = "itemse" itemsOME/ITEMENTHOME/ITEMONSNAME/ITEMONSNAME " kolom = "item" javatype = "com.mybatis.entity.items"> <id kolom = "items_id" properti = "id"/> <hasil kolom = "items_name" properti = "itemsname"/> <hasil kolom = "items_name" properti = "itemsname"/<hasil kolom = "items_detail" Properti "" Properti = "" ItemsName "/<hasil kolom =" items_detail "" "" "itemsname"/<itemsname "/<itemsname =" items = "items =" items = "itemsname" </association> </colly> </colly> </resultMap> <!-Untuk menanyakan informasi produk yang dibeli oleh pengguna dan pengguna, gunakan resulamap-> <pilih id = "findUserAndItemResultMap" resultMap = "userAnditemsResultMap"> Pilih t1.*, t2.username, t2.sex, t2.ademsultMap "> t1. t3.items_num, t3.orders_id, t4.itemsname items_name, t4.detail items_detail, t4.price items_price dari pesanan t1, t_user t2, orderdetail t3, item t4 di mana t1.user_id = t2.id dan t3.orders_id = t1.id dan t1.ids =.id = T2.id <.id dan t3.orders_id = t1.id dan span.
4.4 Tambahkan metode berikut di OrderCustommapper.java:
<span style = "font-family: comic sans ms; font-size: 18px;"> / ** permintaan informasi produk yang dibeli oleh pengguna dan pengguna* / daftar publik <user> findUserAndItemsResultMap (); </span>
4.5 Tambahkan metode tes ke tes junit, kodenya adalah sebagai berikut:
<span style = "Font-family: Comic sans MS; font-size: 18px;"> // query informasi produk yang dibeli oleh pengguna dan pengguna @test public void testfinduseranditemsResultMap () {sqlsession sqlsession = sqlSessionFacTory.opensession (); // Buat Objek Proxy OrdersCustommapper OC = sqlSession.getMapper (orderscustommapper.class); // Daftar Metode Mapper Hubungi <user> Daftar = oc.finduseranditemsResultMap (); System.out.println (daftar); sqlsession.close (); } </span> 4.6 Ringkasan Hasil
Hasil Hasil:
Fungsi: Peta hasil kueri ke dalam nama atribut POJO sesuai dengan nama kolom SQL.
Acara: Tampilan umum catatan terperinci, seperti ketika pengguna membeli detail produk dan menampilkan semua informasi kueri yang terkait pada halaman, Anda dapat langsung menggunakan hasil Hasil untuk memetakan setiap catatan menjadi pojo, dan melintasi daftar (pojo dalam daftar) di halaman ujung depan.
Hasil Hasil:
Gunakan: Asosiasi dan Koleksi untuk menyelesaikan pemetaan satu-ke-satu dan satu-ke-banyak (ada persyaratan pemetaan khusus untuk hasilnya).
asosiasi:
Fungsi: Peta informasi kueri yang terkait ke dalam objek POJO.
Acara: Untuk memfasilitasi kueri informasi terkait, Anda dapat menggunakan asosiasi untuk memetakan informasi pesanan terkait ke atribut POJO objek pengguna, seperti: meminta pesanan dan informasi pengguna terkait.
Menggunakan resultType tidak dapat memetakan hasil kueri ke atribut POJO dari objek POJO. Pilih apakah akan menggunakan HRESSTYPE atau RACKMAP sesuai dengan kebutuhan melintasi kueri yang ditetapkan hasil.
Koleksi:
Fungsi: Peta informasi kueri terkait ke dalam koleksi daftar.
Acara: Untuk memfasilitasi permintaan Asosiasi Perlawanan Perlagangan, Anda dapat menggunakan koleksi untuk memetakan informasi asosiasi ke koleksi daftar. Misalnya: Meminta Modul Lingkup Izin Pengguna dan menu di bawah modul, Anda dapat menggunakan koleksi untuk memetakan daftar modul untuk memetakan atribut daftar menu dari objek modul. Tujuan dari ini adalah untuk memfasilitasi permintaan traversal yang ditetapkan hasil kueri.
Jika Anda menggunakan HasilType, Anda tidak dapat memetakan hasil kueri ke koleksi daftar.
Di atas adalah pemetaan lanjutan 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!