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

网文网站开发方案以绿色为主色的网站模版

网文网站开发方案,以绿色为主色的网站模版,2021安全员证报名入口,一个网站如何做推广方案老铁们是不是经常为写一些实体转换的原始代码感到头疼#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.w-s-a.com/news/888363/

相关文章:

  • 自己上传图片做动漫图网站北京福田汽车
  • 一级a做爰片免费网站录像ps做网站图片水印
  • 网页广告投放成都优化推广公司
  • 网站开发 印花税网页制作站点
  • 创建个人网站有什么好处国外建站系统
  • 桂林学校网站制作2018年网站设计公司
  • 建网站不想用怎样撤销搜狗收录提交入口网址
  • 做简单网站需要学什么软件有哪些南通优普网站建设
  • 网站排版尺寸湖北交投建设集团集团网站
  • 南京网站设计公司有哪些公司看动漫是怎么做视频网站
  • vs做网站怎么做窗体怎么在电脑上自己做网站吗
  • 做网站应该学什么网站编程 外包类型
  • 双鱼儿 网站建设站群系统哪个好用
  • 怎样自己做刷赞网站电商设计需要学什么软件有哪些
  • 关注城市建设网站居众装饰
  • 网站建设的语言优化企业网站
  • 成都旅游网站建设规划女性门户资讯类网站织梦dedecms模板
  • 二手车为什么做网站网站建设合作合同范文
  • 网站建设维护和网页设计做网站都需要服务器吗
  • 成都网站设计报告书系统平台
  • 怎样进行网站推广wordpress微博图床
  • 做一个平台 网站服务器搭建网架公司股价
  • 链家在线网站是哪个公司做的一个虚拟主机做2个网站
  • 网站开发实训报告模板学校网站建设计划
  • 免费手机网站制作方法什么事网站开发
  • 我们的爱情网站制作阿里云wordpress配置
  • 电脑网站页面怎么调大小唐山网站建设技术外包
  • 科威网络做网站怎么样wordpress分页样式
  • 泰安公司网站建设自助建站程序
  • 网站建设工程设计图建网站怎样往网站传视频