Springboot集成MapperFactory(ma.glasnost.orika.MapperFactory)类属性复制

导入jar

   <dependency><groupId>ma.glasnost.orika</groupId><artifactId>orika-core</artifactId><version>1.5.2</version></dependency>

编写容器注入的类 

package com.kingboy.springboot.config;import ma.glasnost.orika.MapperFactory;
import ma.glasnost.orika.impl.DefaultMapperFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class MapperFacotoryAutoWire {@Beanpublic MapperFactory getFactory(){return new DefaultMapperFactory.Builder().build();}}

单元测试例子 

@SpringBootTest(classes = KingBoyApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@RunWith(SpringRunner.class)
public class MapperFactoryTest {@Autowiredprivate MapperFactory mapperFactory;/** * 将一个已经存在的类的属性映射到另外一个类上(可以不存在),直接返回该类,注意必须要有默认构造方法,不然报错 */@Testpublic void copyBeanToBean(){Person person = new Person("king", 123, new Date());mapperFactory.classMap(Person.class, Student.class).field("dateTime","birth")//不一样的字段映射.byDefault()//剩余的字段映射.register();//如果所有字段一样,则不用写mapperFactory.classMap()方法;Student student = mapperFactory.getMapperFacade().map(person, Student.class);System.out.println(student);//Student{name='king', grade='null', age=123, birth=Thu Apr 13 19:04:43 CST 2017}}/** * 将一个List映射到另一个List */@Testpublic void copyListToList(){List<Person> personList = getPersonList();//手动配置不一样的属性转换mapperFactory.classMap(Person.class, Student.class).field("dateTime","birth")//不一样的字段映射.byDefault()//剩余的字段映射.register();//转换ListList<Student> students = mapperFactory.getMapperFacade().mapAsList(personList, Student.class);students.forEach(student -> {System.out.println(student);});/** * Student{name='lucy1', grade='null', age=1, birth=Thu Apr 13 19:10:39 CST 2017} *Student{name='lucy2', grade='null', age=2, birth=Thu Apr 13 19:10:39 CST 2017} *Student{name='lucy3', grade='null', age=3, birth=Thu Apr 13 19:10:39 CST 2017} *Student{name='lucy4', grade='null', age=4, birth=Thu Apr 13 19:10:39 CST 2017} *Student{name='lucy5', grade='null', age=5, birth=Thu Apr 13 19:10:39 CST 2017} */}public List<Person> getPersonList(){List<Person> list = new ArrayList<>(5);Person person1 = new Person("lucy1", 1, new Date());Person person2 = new Person("lucy2", 2, new Date());Person person3 = new Person("lucy3", 3, new Date());Person person4 = new Person("lucy4", 4, new Date());Person person5 = new Person("lucy5", 5, new Date());list.add(person1);list.add(person2);list.add(person3);list.add(person4);list.add(person5);return list;}
}

Person类

package com.kingboy.springboot.domain;import java.time.LocalDateTime;
import java.util.Date;public class Person {public Person() {}public Person(String name, Integer age, Date dateTime) {this.name = name;this.age = age;this.dateTime = dateTime;}private String name;private Integer age;private Date dateTime;public String getName() {return name;}public Person setName(String name) {this.name = name;return this;}public Integer getAge() {return age;}public Person setAge(Integer age) {this.age = age;return this;}public Date getDateTime() {return dateTime;}public Person setDateTime(Date dateTime) {this.dateTime = dateTime;return this;}@Overridepublic String toString() {return "Person{" +"name='" + name + '\'' +", age=" + age +", dateTime=" + dateTime +'}';}
}

Student类 

package com.kingboy.springboot.domain;import java.time.LocalDateTime;
import java.util.Date;public class Student {private String name;private String grade;private Integer age;private Date birth;public Date getBirth() {return birth;}public Student setBirth(Date birth) {this.birth = birth;return this;}public String getName() {return name;}public Student setName(String name) {this.name = name;return this;}public String getGrade() {return grade;}public Student setGrade(String grade) {this.grade = grade;return this;}public Integer getAge() {return age;}public Student setAge(Integer age) {this.age = age;return this;}@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", grade='" + grade + '\'' +", age=" + age +", birth=" + birth +'}';}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/576174.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WPF之布局

此文目的旨在让人快速了解&#xff0c;没有什么深度&#xff0c;如需深入了解布局&#xff0c;请参考msdn。 如果你要把WPF当winform使用&#xff0c;拖拖控件也无不可&#xff0c;不过建议还是不要拖的好。 本文将那些用的比较多的几个布局控件&#xff08;Grid、UniformGrid、…

@Size、@Max、@Min、@Length、注解的含义和区别

Min 验证 Number 和 String 对象是否大等于指定的值Max 验证 Number 和 String 对象是否小等于指定的值Size(min, max) 验证对象&#xff08;Array,Collection,Map,String&#xff09;长度是否在给定的范围之内Length(min, max) 验证字符串长度是否在给定的范围之内区别&#x…

C# WCF WinCE 解决方案 错误提示之:已超过传入消息(65536)的最大消息大小配额。若要增加配额,请使用相应绑定元素上的 MaxReceivedMessageSize 属性...

C# WCF WinCE 解决方案 错误提示之&#xff1a;已超过传入消息(65536)的最大消息大小配额。若要增加配额&#xff0c;请使用相应绑定元素上的 MaxReceivedMessageSize 属性 网上的解决方案&#xff1a; 出现这种错误&#xff0c;先去修改服务器端和客户端的MaxReceivedMessageS…

mybatis xml返回对象类型和接口定义类型不一致

最近在开发中发现xml定义的返回值类型xxxxMaper.xml <select id"selectPlanList" parameterType"Plan" resultMap"PlanListVo">select * from table_name</select> <resultMap type"com.demo.vo.PlanListVo" id"…

算法可视化

http://www.cs.usfca.edu/~galles/visualization/ComparisonSort.html http://jsrun.it/norahiko/oxIy转载于:https://www.cnblogs.com/hailuo/archive/2012/12/06/2805400.html

Springboot @Validated和@Valid的区别 及使用

Valid是使用Hibernate validation的时候使用 Validated是只用Spring Validator校验机制使用 说明&#xff1a;java的JSR303声明了Valid这类接口&#xff0c;而Hibernate-validator对其进行了实现 Validation对Valid进行了二次封装&#xff0c;在使用上并没有区别&#xff0c…

【dp】CF17C. Balance

http://codeforces.com/problemset/problem/17/C 题目中给出一个仅含有a,b,c的字符串&#xff0c;已经两种操作每次选出任意两个相邻的字符&#xff0c;用第一个覆盖掉第二个或者反之&#xff0c;最后询问不考虑操作次数&#xff0c;最终有多少种不同的序列其中a&#xff0c;b,…

git常用的命令收集

1.强制推送&#xff08;慎用&#xff0c;除非你认为其他冲突等可以丢弃 或者不是很重要&#xff09;git push -- force git—全局设置用户名、密码、邮箱 git config命令的–global参数&#xff0c;用了这个参数&#xff0c;表示你这台机器上所有的Git仓库都会使用这个配置&…

git文件操作命令

1.创建文件等小命令 touch a // 创建一个a文件 echo 1234 >> a // 把1234这个内容放入a文件 cat a // 打开a文件 读取出a文件中的内容 mkdir test // 创建test文件夹 rm 文件名 // 删除文件 pwd // 打印当前工作路径2.安装git的时候 都会安装git bash和git GUI 我们完全也…

ECSHOP设置默认配送方式和默认支付方式

用过ECSHOP的站长都知道&#xff0c;首次登陆ECSHOP进行购物的时候&#xff0c;购物流程中没有“默认配送方式和默认支付方式”这个功能 即使网站上只有一种配送方式&#xff0c;它也不会默认选中这个唯一的配送方式。 当你的网站只有一种配送方式&#xff0c;或者&#xff0c;…

spring如何解决循环依赖

什么是循环依赖&#xff1f; 循环依赖其实是指两个及以上bean相互持有对方&#xff0c;最终形成闭环的过程&#xff08;一般聊循环依赖都是默认的单例bean&#xff09;&#xff0c;简单说就是A依赖B,B依赖C,C又依赖A。 下面我就借用别人的网图来解释下&#xff1a; 注意&#…

利用Frame Animation实现动画效果,代码正确,就是达不到变换效果

就是因为把第一帧图片设置成了ImageView的src资源&#xff0c;从而一直覆盖在变换效果之上&#xff0c;去掉ImageView的src属性即可解决。 要想使应用已载入便播放动画效果&#xff0c;直接将 animationDrawables.start(); 放在activity的各种回调函数中&#xff08;onCreate、…

【电信增值业务学习笔记】3 语音类增值业务

作者&#xff1a;gnuhpc 出处&#xff1a;http://www.cnblogs.com/gnuhpc/ 1.一卡多号&#xff1a;&#xff08;Single SIM Multiple Number -SSMN&#xff09; 为拥有一个SIM卡的移动用户提供多个电话号码作为副号码主叫&#xff1a;可以选择用主号码还是副号码发起呼叫被叫&a…

循环依赖源码深度解析

singletonObjects &#xff08;一级缓存&#xff09;它是我们最熟悉的朋友&#xff0c;俗称“单例池”“容器”&#xff0c;缓存创建完成单例Bean的地方。 earlySingletonObjects&#xff08;二级缓存&#xff09;映射Bean的早期引用&#xff0c;也就是说在这个Map里的Bean不是…

java获取异常堆栈详情

/** * 获取exception详情信息 * * param e * Excetipn type * return String type */ public static String getExceptionDetail(Exception e) { StringBuffer msg new StringBuffer("null"); if (e ! null) { msg new StringBuffer(""); String messag…

多线程间共享变量线程安全问题——ThreadLocal

Java并发编程中很重要的类&#xff1a;ThreadLocal 在多线程应用程序中&#xff0c;对共享变量进行读写的场景是很常见的。如果不使用一定的技术或方案&#xff0c;会引发各种线程安全的问题。常见解决线程安全的方式有synchronized、volatile等方式&#xff0c;但synchronized…

我的学生时代之一[小学时代]

真是岁月如梭~ 猛然间这么一掐指&#xff0c;我都毕业4年有余了。先前工作一直不如意&#xff0c;到现在好一点点。 有时候一想&#xff0c;挺怀念上学的时光。 真的是回不去了~ 我又记得多少同学的名字&#xff1f;朋友还有多少常联系的&#xff1f;不很多~ 今天&#xff0c;突…

java8流式操作

简介&#xff1a;Stream 中文称为 “流”&#xff0c;通过将集合转换为这么一种叫做 “流” 的元素序列&#xff0c;通过声明性方式&#xff0c;能够对集合中的每个元素进行一系列并行或串行的流水线操作。 操作分类&#xff1a; .stream() stream()把一个源数据&#xff0c;可…

web.config中httpRunTime的属性

配置httpRuntime也可以让FileUpload上传更大的文件,不过设置太大了会因用户将大量文件传递到该服务器而导致的拒绝服务攻击(属性有说明) <httpRuntime> <httpRuntime useFullyQualifiedRedirectUrl"true|false" maxRequestLength"size in kbytes"…

创建并运用客户化jsp标签

1.在WEB-INF目录下新建message.properties属性文件 文件内容为“key-value”对&#xff0c;添加测试内容如下&#xff1a;titlehello world bodyhello taglib 2.定义初始化类TaglibInit&#xff0c;用…