orika-使用

orika 對象拷貝

依賴

    <!--  bean復(fù)制工具 -->
    <dependency>
        <groupId>ma.glasnost.orika</groupId>
        <artifactId>orika-core</artifactId>
        <version>1.5.2</version>
    </dependency>

基本使用

    MapperFactory mapperFactory = new DefaultMapperFactory.Builder().mapNulls(false).build();

    // 1 List
    mapperFactory.classMap(PersonNameList.class, PersonNameParts.class)
                .field("nameLists[0]", "firstName")
                .field("nameLists[1]", "lastName")
                .register();


    // 2 Map
    Map<String, String> nameMap = new HashMap<>();
    nameMap.put("first", "aaaaaa");
    nameMap.put("last", "111111111");
    mapperFactory.classMap(PersonNameMap.class, PersonNameParts.class)
            .field("nameMap['first']", "firstName")
            .field("nameMap[\"last\"]", "lastName")
            .register();


    ConverterFactory converterFactory = mapperFactory.getConverterFactory();
    // 3 自定義類型轉(zhuǎn)換  全局  全局方式注冊:
    converterFactory.registerConverter("jsonConvert", new JsonConfigConvert<BookInfo>());

    mapperFactory.classMap(BookEntity.class, BookDTO.class)
            .field("authorName", "author.name")             // 對象嵌套字段
            .field("authorBirthday", "author.birthday")     // 對象嵌套字段
            .fieldMap("bookInformation", "bookInfo").converter("jsonConvert").add()     // 注冊轉(zhuǎn)換器
            .byDefault()    //  默認(rèn)字段
            .register();

    MapperFacade mapperFacade = mapperFactory.getMapperFacade();    
    BookEntity bookEntity = new BookEntity(
            "Harry",
            "maoyz",
            Date.from(LocalDate.of(1952, Month.MARCH, 11).atStartOfDay(ZoneId.systemDefault()).toInstant()),
            "{\"isbn\": \"9787532754687\", \n \"page\": 279\n }");

    // 使用
    final BookDTO bookDTO = mapperFacade.map(bookEntity, BookDTO.class);

雙向映射

    public class JsonConfigConvert<T> extends BidirectionalConverter<T, String> {

        private static final Logger logger = LoggerFactory.getLogger(JsonConfigConvert.class);

        @Override
        public String convertTo(T source, Type<String> destinationType, MappingContext mappingContext) {
            logger.info("********************* JsonConfigConvert convertTo() ,source = {}, destinationType = {} ***********************", source, destinationType);

            return JSON.toJSONString(source.toString());
        }

        @Override
        public T convertFrom(String source, Type<T> destinationType, MappingContext mappingContext) {
            logger.info("********************* JsonConfigConvert convertFrom() ,source = {}, destinationType = {} ***********************", source, destinationType);

            return JSON.parseObject(source, destinationType.getRawType());
        }
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容