Jadual Kandungan
Apa itu Mapstruct?
Mengapa Mapstruct Over Pemetaan Manual atau Perpustakaan Lain?
Contoh cepat
Ciri -ciri utama yang anda gemari
1. Auto-pemetaan dengan nama
2. Logik pemetaan tersuai
3. Objek & Koleksi bersarang
4. Integrasi dengan musim bunga
Persediaan (Maven)
Petua Pro: Gunakan @Named untuk logik yang boleh diguna semula
Rumah Java javaTutorial Menggunakan mapstruct untuk pemetaan kacang yang tidak menyakitkan di java

Menggunakan mapstruct untuk pemetaan kacang yang tidak menyakitkan di java

Jul 28, 2025 am 03:20 AM
java

Mapstruct adalah penjana kod kompilasi masa yang memudahkan pemetaan antara kacang Java. 1. Ia secara automatik menjana kelas pelaksanaan dengan menentukan antara muka untuk mengelakkan menulis secara manual set/mendapatkan kod pemetaan secara manual; 2. Ia mempunyai jenis selamat, tiada overhead runtime, menyokong pemetaan automatik medan nama yang sama, ekspresi tersuai, objek bersarang dan pemetaan pengumpulan; 3. Ia boleh diintegrasikan dengan Spring dan menyuntik mapper ke dalam kacang musim bunga menggunakan @mapper (ComponentModel = "Spring"); 4. Ia mempunyai konfigurasi yang mudah, hanya memperkenalkan kebergantungan mapstruct dan annotationprocessorpressorporporsaths plug-in; 5. Ia menyokong @named dan anotasi lain untuk melaksanakan logik pemetaan tersuai yang boleh diguna semula, meningkatkan kemasyhuran dan pemeliharaan Kod, yang merupakan salah satu amalan terbaik untuk mengendalikan pemetaan objek di Java.

Menggunakan mapstruct untuk pemetaan kacang yang tidak menyakitkan di java

Jika anda pernah mendapati diri anda menulis kod boilerplate yang tidak berkesudahan untuk menyalin data dari satu objek Java (seperti DTO) kepada yang lain (seperti entiti), anda tahu bagaimana membosankan dan rawan kesilapan itu. Di sinilah Mapstruct masuk-penjana kod kompilasi masa yang membuat pemetaan kacang di Java bukan hanya lebih mudah, tetapi praktikal menyakitkan.

Menggunakan mapstruct untuk pemetaan kacang yang tidak menyakitkan di java

Apa itu Mapstruct?

Mapstruct adalah penjana kod yang memudahkan pemetaan antara kacang Java (contohnya, dari entiti JPA hingga DTO rehat). Daripada menulis setX(getX()) secara manual untuk setiap bidang, anda menentukan antara muka, dan Mapstruct menghasilkan pelaksanaan pada masa penyusunan - tidak ada refleksi, tiada overhead runtime, hanya cepat, bersih, kod yang boleh dibaca.

Mengapa Mapstruct Over Pemetaan Manual atau Perpustakaan Lain?

  • Jenis-selamat : Kesilapan yang ditangkap pada masa penyusunan, bukan runtime.
  • Tiada overhead runtime : Kod yang dihasilkan adalah java biasa - tiada refleksi atau proksi.
  • boilerplate minimum : Tulis antara muka, dapatkan pelaksanaan.
  • Default Smart : Bidang peta secara automatik dengan nama yang sama.
  • Disesuaikan : Mengendalikan nama tidak sepadan, objek bersarang, koleksi, dan juga logik tersuai.

Contoh cepat

Katakan anda mempunyai:

Menggunakan mapstruct untuk pemetaan kacang yang tidak menyakitkan di java
 pengguna kelas awam {
    ID panjang peribadi;
    Rentetan peribadi swasta;
    Rentetan peribadi lastname;
    e -mel rentetan peribadi;
    // penetas getters
}

UserDto kelas awam {
    Fullname String Private; // peta name firstname
    e -mel rentetan peribadi;
}

Dengan Mapstruct, buat antara muka Mapper:

 @Mapper
UserMapper antara muka awam {
    Contoh userMapper = Mapper.GetMapper (userMapper.class);

    @Mapping (sasaran = "fullName", expression = "java (user.getFirstName () \" \ "user.getLastName ())")
    Userdto todto (pengguna pengguna);
}

Kemudian gunakannya:

Menggunakan mapstruct untuk pemetaan kacang yang tidak menyakitkan di java
 Pengguna pengguna = pengguna baru ();
user.setFirstName ("John");
user.setLastName ("doe");
user.seteMail ("John@example.com");

Userdto dTO = userMapper.Instance.todTo (pengguna);
// dto.getfullName () → "John Doe"

Ciri -ciri utama yang anda gemari

1. Auto-pemetaan dengan nama

Jika nama medan sepadan (seperti email ), tiada konfigurasi tambahan diperlukan.

2. Logik pemetaan tersuai

Gunakan @Mapping dengan:

  • expression untuk ekspresi java sebaris
  • qualifiedByName untuk kaedah tersuai yang boleh diguna semula
  • @AfterMapping untuk logik pasca pemprosesan

3. Objek & Koleksi bersarang

Mapstruct Handle List<User>List<UserDto> Secara automatik - tiada kod tambahan.

4. Integrasi dengan musim bunga

Cukup tambah componentModel = "spring" :

 @Mapper (ComponentModel = "Spring")
UserMapper antara muka awam {
    Userdto todto (pengguna pengguna);
}

Kini ia adalah kacang musim bunga - menyuntiknya seperti yang lain.

Persediaan (Maven)

Tambah ke pom.xml :

 <geterlihat>
    <groupId> org.mastruct </groupId>
    <stistfactid> Mastruct </artifactid>
    <versi> 1.5.5.final </versi>
</ketergantungan>

<sugin>
    <groupId> org.apache.maven.plugins </groupId>
    <stifactid> Maven-Compiler-Plugin </artifactid>
    <figuration>
        <NotationProcessorPaths>
            <sath>
                <groupId> org.mastruct </groupId>
                <stifactid> Mastruct-Processor </artifactid>
                <versi> 1.5.5.final </versi>
            </path>
        </AnnotationProcessorPaths>
    </konfigurasi>
</plugin>

Petua Pro: Gunakan @Named untuk logik yang boleh diguna semula

 @Mapper
UserMapper antara muka awam {
    @Mapping (sasaran = "fullName", kualifiedByName = "TOfullName")
    Userdto todto (pengguna pengguna);

    @Named ("tofullname")
    rentetan lalai tofullName (pengguna pengguna) {
        kembali user.getFirstName () "" user.getLastName ();
    }
}

Ini menjadikan pemetaan anda bersih dan boleh diguna semula di pelbagai pemetaan.


Mapstruct menghilangkan geseran dari pemetaan objek - tidak ada lagi penyalinan manual, tidak ada lagi kejutan runtime. Sebaik sahaja anda mula menggunakannya, anda akan tertanya -tanya bagaimana anda pernah hidup tanpa itu.
Pada asasnya, jika anda melakukan pemetaan kacang di Java dan tidak menggunakan mapstruct, anda melakukannya dengan cara yang sukar.

Atas ialah kandungan terperinci Menggunakan mapstruct untuk pemetaan kacang yang tidak menyakitkan di java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Skop pembolehubah PHP dijelaskan
1 bulan yang lalu By 百草
Mengulas kod dalam php
4 minggu yang lalu By 百草
Petua untuk menulis komen php
4 minggu yang lalu By 百草

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial PHP
1510
276
Tetap: Kemas kini Windows gagal dipasang Tetap: Kemas kini Windows gagal dipasang Aug 08, 2025 pm 04:16 PM

RuntheWindowsUpdateTroubleshooterviaSettings>Update&Security>Troubleshoottoautomaticallyfixcommonissues.2.ResetWindowsUpdatecomponentsbystoppingrelatedservices,renamingtheSoftwareDistributionandCatroot2folders,thenrestartingtheservicestocle

Apakah proses siri untuk objek Java? Apakah proses siri untuk objek Java? Aug 08, 2025 pm 04:03 PM

Javaserializationconvertsanobject'sstateintoabytestreamforstorageortransmission, anddeserialization reconstructstheobjectfromhattstream.1.toenableserialization, aclassmustimplementtheserializableInterfe.2.useObjectStreamtoserialialization.useObjectStreamtoserialialization.useObjectStreamtosererialialize.

Cara menggunakan gelung sementara di java Cara menggunakan gelung sementara di java Aug 08, 2025 pm 04:04 PM

AwhileloopinjavarepeatedlyexecutescodeaslongasthecondeConditionistrue; 2.InitializeAcontrolvariableBeforetheloop; 3.DefinetheloopcondusingAbeaneanExpression;

Apakah hashmap di java? Apakah hashmap di java? Aug 11, 2025 pm 07:24 PM

AhashmapinjavaisadataStructureThatstoreskey-valuepairsforefficientretrieval, sisipan, dandeletion.itusesthekey'shashcode () methodTodeterminestoragelococationandallowsaverageo (1) TimeComplexityForget () dan)

Cara membuat dan menggunakan array di java Cara membuat dan menggunakan array di java Aug 11, 2025 pm 04:00 PM

TocreateanduseanArrayinjava, firstdeclarethearraywithTheTatatyPeAndSquareBrackets, thenStantiateitWithThenewkeywordorinitialializeitDirectlyWithValues;

Bagaimana anda membuat utas di Java? Bagaimana anda membuat utas di Java? Aug 11, 2025 pm 01:34 PM

YoucancreateathreadinjavabyeporthingthethreadclassorImplementingTherUnnableInterface.2. ExtendendingThreadInvolvesCreatingAclassThatOrridestHerun () methodIntCallingSt.

Python Argparse Contoh Argumen yang Diperlukan Python Argparse Contoh Argumen yang Diperlukan Aug 11, 2025 pm 09:42 PM

Apabila menggunakan modul ArgParse, parameter yang mesti disediakan dapat dicapai dengan menetapkan yang diperlukan = benar. 1. Gunakan diperlukan = benar untuk menetapkan parameter pilihan (seperti -input) yang diperlukan. Jika tidak disediakan semasa menjalankan skrip, ralat akan dilaporkan; 2. Parameter kedudukan diperlukan secara lalai, dan tidak perlu ditetapkan diperlukan = benar; 3. Adalah disyorkan untuk menggunakan parameter kedudukan untuk parameter yang diperlukan. Kadang -kadang, parameter pilihan yang diperlukan = benar digunakan untuk mengekalkan fleksibiliti; 4. Diperlukan = benar adalah cara yang paling langsung untuk mengawal parameter. Selepas digunakan, pengguna mesti menyediakan parameter yang sepadan apabila memanggil skrip, jika tidak, program akan mendorong ralat dan keluar.

Cara Menggunakan Satu Set di Java Cara Menggunakan Satu Set di Java Aug 11, 2025 am 11:57 AM

ChoosetheappropropateSetImplementation: useHashSetForfastOperationswithoutorder, linkedHashSetForInSertionorder, andTreesetForsortedOrder.2.addelementSwithAdd () andRemoveWithRemove (), whereadd () returnsfalSeifeLementiseWeReyPresent

See all articles