当前位置: 首页 > news >正文

天水 网站建设 招聘山东郓城网站建设

天水 网站建设 招聘,山东郓城网站建设,印度域名注册网站,新手如何做网络推广老铁们是不是经常为写一些实体转换的原始代码感到头疼#xff0c;尤其是实体字段特别多的时候。有的人会说#xff0c;我直接使用get/set方法。没错#xff0c;get/set方法的确可以解决#xff0c;而且也是性能较高的处理方法#xff0c;但是大家有没有想过#xff0c;要…老铁们是不是经常为写一些实体转换的原始代码感到头疼尤其是实体字段特别多的时候。有的人会说我直接使用get/set方法。没错get/set方法的确可以解决而且也是性能较高的处理方法但是大家有没有想过要是转换的实体字段比较多那么get/set方法的代码量是非常恐怖的有人会说用自带的BeanUtils工具类但在属性拷贝的过程中会遇到类型转换异常或是影响性能等等问题。所以我把自己项目中使用的这款转换神器分享出来。BeanUtils属性复制 之前对各种属性映射工具的性能进行了简单的对比结果如下 先贴下官网地址吧https://mapstruct.org/ 一、pom 配置 !-- 属性设置 --propertiesjava.version1.8/java.versionproject.build.sourceEncodingUTF-8/project.build.sourceEncodingproject.reporting.outputEncodingUTF-8/project.reporting.outputEncodingmybatisPlus.version3.5.3.1/mybatisPlus.versionlombok.version1.18.26/lombok.versionmysql.version8.0.30/mysql.versionalibaba.druid.version1.2.4/alibaba.druid.versionthymeleaf.version3.0.15.RELEASE/thymeleaf.versionspring4.version3.0.12.RELEASE/spring4.versionmapstruct.version1.5.3.Final/mapstruct.version/properties!-- 依赖关系 --dependencies!-- springmvc --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency!-- 测试test --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-thymeleaf/artifactId/dependency!-- jpa(持久层) --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-jpa/artifactId/dependency!--mybatis-plus依赖--dependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-boot-starter/artifactIdversion${mybatisPlus.version}/version/dependency!--lombok依赖--dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion${lombok.version}/version/dependency!-- mysql(数据库) --dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion${mysql.version}/version/dependency!-- alibaba数据库连接池 --dependencygroupIdcom.alibaba/groupIdartifactIddruid-spring-boot-starter/artifactIdversion${alibaba.druid.version}/version/dependencydependencygroupIdorg.thymeleaf/groupIdartifactIdthymeleaf/artifactIdversion${thymeleaf.version}/version/dependency!-- Spring 4集成包这可能是Spring应用程序所需的一切--dependencygroupIdorg.thymeleaf/groupIdartifactIdthymeleaf-spring4/artifactIdversion${spring4.version}/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-devtools/artifactIdoptionaltrue/optional/dependency!-- 属性转换 --dependencygroupIdorg.mapstruct/groupIdartifactIdmapstruct/artifactIdversion${mapstruct.version}/version/dependency!-- idea 2018.1.1 之前的版本需要添加下面的配置后期的版本就不需要了可以注释掉我自己用的2022.2.3 --!-- dependency--!-- groupIdorg.mapstruct/groupId--!-- artifactIdmapstruct-processor/artifactId--!-- version${org.mapstruct.version}/version--!-- scopeprovided/scope--!-- /dependency--/dependencies!-- 编译插件 --buildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactIdconfigurationincludeSystemScopetrue/includeSystemScope/configuration/plugin!-- 原有工具自带的编译器时无法生成实现类需要maven 的方式来进行编译才会生成属性转换的实现类。需添加以下依赖 --plugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-compiler-plugin/artifactIdversion3.8.1/versionconfigurationsource${java.version}/sourcetarget${java.version}/targetannotationProcessorPaths!-- lombok的依赖位置一定放在mapstruct之前 否则转换后的对象获取不到属性值 --pathgroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion${lombok.version}/version/pathpathgroupIdorg.mapstruct/groupIdartifactIdmapstruct-processor/artifactIdversion${mapstruct.version}/version/path/annotationProcessorPaths/configuration/plugin/plugins/build /projectPSlombok和mapstruct的版本兼容问题可以直接使用上面pom里的版本 1、maven插件要使用3.6.0版本以上 2、lombok使用1.16.16版本以上 3、另外编译的lombok和mapstruct的插件不要忘了加上。否则会出现下面的错误No property named aaa exists in source parameter(s). Did you mean null? 二、转换实体类 ⑴.源实体1 package com.***;import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor;import java.util.Date;/*** 学生*/ Data Builder AllArgsConstructor NoArgsConstructor public class Student {/*** ID*/private Long userId;/*** 姓名*/private String name;/*** 年龄*/private Integer age;/*** 手机号*/private String phone;/*** 性别(1男 2女)*/private Integer sex;/*** 生日*/private String birthday;/*** 创建时间*/private Date createTime;}⑵.源实体2 package com.***;import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor;/*** 课程*/ Data Builder AllArgsConstructor NoArgsConstructor public class Course {/*** 课程ID*/private Long courseId;/*** 课程名称*/private String courseName;/*** 序号*/private Integer sortNo;}⑶.目标实体1 package com.***;import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor;import java.util.Date;/*** 学生Vo*/ Data Builder AllArgsConstructor NoArgsConstructor public class StudentVo {/***用户ID */private Long userId;/*** 姓名*/private String name;/*** 年龄*/private Integer age;/*** 手机号*/private String phone;/*** 性别(1男 2女)*/private Integer gender;/*** 生日*/private String birthday;/*** 创建时间*/private Date createTime;}⑷.目标实体2 package com.***;import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor;/*** 学生课程Vo*/ Data Builder AllArgsConstructor NoArgsConstructor public class StudentCourseVo {/*** 学生姓名*/private String name;/*** 年龄*/private Integer age;/*** 性别(1男 2女)*/private String gender;/*** 生日*/private String birthday;/*** 课程名称*/private String course;}⑸.转换Mapper接口编译完成后会自动生成相应的实现类 package com.***;import com.test.java.domain.entity.Course; import com.test.java.domain.entity.Student; import com.test.java.domain.vo.StudentCourseVo; import com.test.java.domain.vo.StudentVo; import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.factory.Mappers;import java.util.ArrayList; import java.util.Date; import java.util.List;/*** 转换mapper*/ Mapper public interface StudentWrapper {StudentWrapper INSTANCE Mappers.getMapper(StudentWrapper.class);// 转换一实体转实体Mapping(target userId, ignore true)Mapping(source sex, target gender)Mapping(target createTime, expression java(new java.util.Date()))Mapping(source name, target name, defaultValue 张三)StudentVo convertVo(Student student);// 转换二list转listListStudentVo convertList(ListStudent list);// 转换三多对象转换一个对象Mapping(source student.sex, target gender)Mapping(source course.courseName, target course)StudentCourseVo convertTo(Student student, Course course);}现在就可以直接使用mapper接口进行属性转换了以下举例有三种转换用法 1、转换一对象转对象 2、转换二集合转集合 3、转换三多个对象转单一对象 public static void main(String[] args) {// 转换一Student student Student.builder().userId(100L).age(18).phone(13012345678).sex(1).birthday(01-01).build();StudentVo convertVo StudentWrapper.INSTANCE.convertVo(student);System.out.println(转换一、实体转实体 convertVo);// 转换二Student student1 Student.builder().userId(1L).name(张三).age(18).phone(13012345678).sex(1).birthday(01-01).createTime(new Date()).build();Student student2 Student.builder().userId(2L).name(李四).age(20).phone(15026668652).sex(2).birthday(05-01).createTime(new Date()).build();ListStudent list new ArrayList();list.add(student1);list.add(student2);ListStudentVo convertList StudentWrapper.INSTANCE.convertList(list);System.out.println(转换二、list转list convertList);// 转换三Student student3 Student.builder().name(小明).age(18).phone(13512365568).sex(1).birthday(05-06).createTime(new Date()).build();Course course Course.builder().courseName(《Java从入门到放弃》).sortNo(1).build();StudentCourseVo convertTo StudentWrapper.INSTANCE.convertTo(student3, course);System.out.println(转换三、多对象转换一个对象 convertTo);} 转换结果 三、特殊处理 mapper转换接口中还可以进行字段映射改变字段类型指定格式化、赋予默认值、过滤不需要转换的字段、自定义转换等方式包括一些日期的默认处理只需在Mapping注解中添加相应参数即可如下 字段映射Mapping(source sex, target gender)StudentVo convertVo(Student student); source代表源字段 target代表目标字段 日期格式化Mapping(source createTime,target createTime,dateFormat yyyy-MM-dd HH:mm:ss)StudentVo convertVo(Student student); 默认值Mapping(source name, target name, defaultValue 张三)StudentVo convertVo(Student student); defaultValue转换时赋予默认值 过滤不需要转换的字段Mapping(target userId, ignore true)StudentVo convertVo(Student student); ignore默认为false不过滤 自定义转换Mapping(target createTime, expression java(new java.util.Date()))StudentVo convertVo(Student student); expression自定义转换规则当前案例是createTime字段获取当前系统时间 如果这篇文章对您有所帮助或者有所启发的话求一键三连点赞、评论、收藏➕关注您的支持是我坚持写作最大的动力。
http://www.hkea.cn/news/14300015/

相关文章:

  • 肥西网站建设家乡的网站设计模板
  • 整人网站建设广州做网站基本流程
  • 品牌网站建设小科6a蚪邢台建网站哪里有
  • 中国建设网官网网站免费一级域名注册网站
  • 如何建设一个自己的网站河北企业网站建设技术
  • 第三方网站建设平台国内信息图制作网站
  • 襄樊网站开发wordpress改不成中文
  • 中国建设信息化官网无锡网站搜索引擎优化
  • 深圳外包公司网站基于 的企业网站建设
  • 婚恋网站哪家做的最好平度网站建设
  • 常州专业网站建设推广为违法网站做推广进去要几年
  • 住宅城乡建设部门户网站增加网站产品
  • wordpress产品模块网站seo优化怎么做
  • 上海网站备案人工服务器wordpress加描述
  • o2o网站有哪些网站开发 手机 电脑
  • 公司网站建设详细方案织梦怎么做中英文双语网站
  • 网站开发的工作环境app大全免费软件排行榜
  • 企业网站推广公司wordpress.org密码
  • 昆山网站建设哪家比较好番禺人才网地址
  • 如何创建一个网站怎么快速做网站
  • 潍坊网站收录网站建设书生商友
  • 网站建设需求怎么写本地服务器搭建教程
  • 霍邱县住房和城乡建设局网站网站建设模板公司
  • 如何修改网站烟台建设
  • 企业网站app开发平台wordpress 修改网址
  • 建站公司最新报价网店设计是做什么的
  • 网站代码模板免费网站打不开怎么解决
  • 专业的网站建设服务交易平台网站建设协议附件
  • 优化搜狗排名保定网站seo技术
  • 怎样营销建设网站网站怎么做营销