2016-05-10 16 views
5

स्ट्रिंग को सूची और सूची में स्ट्रिंग कैसे मैप करें?मैपस्ट्रक्चर स्ट्रिंग सूची मैपिंग

, हम आसानी से कोड

fields("primaryEmailAddress", "emailAddress[0]") 
fields("secondaryEmailAddress", "emailAddress[1]") 

fields("phones[0]", "primaryPhone") 
fields("phones[1]", "secondaryPhone") 

कैसे मैं MapStruct में मानचित्रण की एक ही तरह से कर सकते हैं की निम्न पंक्ति के साथ मैप कर सकते हैं हम क्लासेस

class People{ 
    private String primaryEmailAddress; 
    private String secondaryEmailAddress; 
    private List<String> phones; 
    //getter and setters 
} 

class PeopleTO{ 
    private List<String> emailAddress; 
    private String primaryPhone; 
    private String secondaryPhone; 
    //getter and setters 
} 

निम्नलिखित है डोजर और Orika में विचार करें? मैपस्ट्रक्चर पर मुझे और उदाहरण कहां मिलेगा?

उत्तर

1

मैं यहाँ कुछ उदाहरण देख सकते हैं: https://github.com/mapstruct/mapstruct-examples

चेकआउट अपने विशिष्ट आवश्यकता के लिए इस मॉड्यूल (गैर Iterable करने के लिए Iterable): https://github.com/mapstruct/mapstruct-examples/tree/master/mapstruct-iterable-to-non-iterable

और यहाँ एक और एक: http://blog.goyello.com/2015/09/08/dont-get-lost-take-the-map-dto-survival-code/

सुनिश्चित नहीं हैं कि अगर यह Iterable के लिए गैर-पुनरावर्तनीय मानचित्र को मानचित्र बनाना संभव है। नीचे

+0

यह एक स्ट्रिंग के लिए काम किया है मानचित्रण सूची, लेकिन मैं ईमेल पते की सूची में प्राथमिक और माध्यमिक ईमेल पता मैप करना चाहते हैं जब मैं यह है कि यह एक ही क्षेत्र फेंकता करना मैप नहीं किया जा सकता है – suresh

6

उदाहरण People की primaryEmailAddress और secondaryEmailAddress गुण में PeopleTO में emailAddress सूची से तत्वों मैप करता है।

मानचित्र संरचना सीधे संग्रह में मैप नहीं कर सकती है, लेकिन यह आपको प्रक्रिया को पूरा करने के लिए मैपिंग के बाद चलने वाली विधियों को लागू करने की अनुमति देती है। मैंने में phones सूची के तत्वों में और secondaryPhonePeopleTO गुणों को मैप करने के लिए ऐसी एक विधि का उपयोग किया है।

abstract class Mapper { 
    @Mappings({ 
     @Mapping(target="primaryEmailAddress", expression="emailAddress != null && emailAdress.size() >= 1 ? emailAdresses.get(0) : null"), 
     @Mapping(target="secondaryEmailAddress", expression="emailAddress != null && emailAdress.size() >= 2 ? emailAdresses.get(1) : null"), 
     @Mapping(target="phones", ignore=true) 
    }) 
    protected abstract People getPeople(PeopleTO to); 

    @AfterMapping 
    protected void setPhones(PeopleTO to, @MappingTarget People people) { 
     people.setPhones(new List<String>()); 
     people.getPhones().add(to.primaryPhone); 
     people.getPhones().add(to.secondaryPhone); 
    } 
} 
संबंधित मुद्दे