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

一个网站是怎么建立的男女做羞羞羞的事视频网站

一个网站是怎么建立的,男女做羞羞羞的事视频网站,买卖网交易平台,wordpress 导航条MapStruct从0到0.5 开发的过程,经常会用到实体类属性映射,同时为了方便,开发者也很少自己写专门的属性赋值工具类。索性会直接使用Sprrng提供的BeanUtils工具类,然后在性能上和字段属性赋值上的问题,一直是为开发者所…

MapStruct从0到0.5

开发的过程,经常会用到实体类属性映射,同时为了方便,开发者也很少自己写专门的属性赋值工具类。索性会直接使用Sprrng提供的BeanUtils工具类,然后在性能上和字段属性赋值上的问题,一直是为开发者所诟病的,下面直接上案例。

1、引入依赖

注意lombok引入一定要在mapstruct依赖的前面。否则会出现无法找到Setter和Getter方法的异常出现。

<dependencies><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><!-- mapstruct --><dependency><groupId>org.mapstruct</groupId><artifactId>mapstruct-jdk8</artifactId><version>1.5.3.Final</version></dependency><dependency><groupId>org.mapstruct</groupId><artifactId>mapstruct-processor</artifactId><version>1.5.3.Final</version></dependency><dependency><groupId>org.mapstruct</groupId><artifactId>mapstruct</artifactId><version>1.5.3.Final</version></dependency>
</dependencies>

2、编写案例

引入依赖后,则进行日常较为常用的案例测试,首先附上基础代码:
User.java

@Data
public class User {private Long id;/*** 情况一:时间字符串转时间对象*/private String birthDay;/*** 时间字符串转时间对象*/private Date happenDay;/*** 情况二:使用工具类指定方法进行处理字段*/private String ids;/*** 情况三:忽略字段*/private String ignore;/*** 情况四:字段对应*/private String label;
}

UserVo.java

@Data
public class UserVo {private Long id;/*** 情况一:时间字符串转时间对象*/private Date birthDay;/*** 时间对象转时间字符串*/private String happenDay;/*** 情况二:使用工具类指定方法进行处理字段*/private List<String> ids;/*** 情况三:忽略字段*/private String ignore;/*** 情况四:字段对应*/private String value;
}

**注意:**这里的Mapper注解在mapstruct包下,别与myBatis中的注解混淆。

UserMapper.java

import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;@Mapper
public interface UserMapper {UserMapper INSTANCE = Mappers.getMapper(UserMapper.class);@Mapping(target = "birthDay", dateFormat = "yyyy-MM-dd")@Mapping(target = "happenDay", dateFormat = "yyyy-MM-dd")@Mapping(source = "label", target = "value")@Mapping(target = "ignore", ignore = true)@Mapping(target = "ids", expression = "java(ConverterUtil.strToList(user.getIds()))")UserVo UserToUserVo(User user);
}

ConverterUtil.java

public class ConverterUtil {public static List<String> strToList(String str){return Arrays.asList(str.split(","));}
}

MapStructTest.java

public class MapStructTest {public static void main(String[] args) {// 1、创造属性User user = new User();user.setId(1L);user.setBirthDay("2023-08-29");user.setHappenDay(new Date());user.setIds("11,22,33");user.setIgnore("这是一个忽略字段");user.setLabel("将label映射到value上");// 2、测试效果UserVo userVo = UserMapper.INSTANCE.UserToUserVo(user);System.out.println(userVo);}
}

下面打印显示结果:

UserVo(id=1, birthDay=Tue Aug 29 00:00:00 CST 2023, happenDay=2023-09-09, 
ids=[11, 22, 33], ignore=null, value=将label映射到value上)Process finished with exit code 0

3、详细说明

1、@Mapping和@Mappings
@Mapping(target = "birthDay", dateFormat = "yyyy-MM-dd")
@Mapping(target = "happenDay", dateFormat = "yyyy-MM-dd")
@Mapping(source = "label", target = "value")
@Mapping(target = "ignore", ignore = true)
@Mapping(target = "ids", expression = "java(ConverterUtil.strToList(user.getIds()))")
UserVo UserToUserVo(User user);

上文中多个Mapping也可以替换为Mapings写法

@Mappings({@Mapping(target = "birthDay", dateFormat = "yyyy-MM-dd"),@Mapping(target = "happenDay", dateFormat = "yyyy-MM-dd"),@Mapping(source = "label", target = "value"),@Mapping(target = "ignore", ignore = true),@Mapping(target = "ids", expression ="java(ConverterUtil.strToList(user.getIds()))")})
UserVo UserToUserVo(User user);
2、dateFormat 时间类型(Date.class)和字符串的相互转换

无论是时间字符串转时间对象,还是时间对象转时间字符串都需要补充转换的时间格式

// birthDay有 string 转 date
@Mapping(target = "birthDay", dateFormat = "yyyy-MM-dd")
// happenDay有 date 转 string
@Mapping(target = "happenDay", dateFormat = "yyyy-MM-dd")
3、ignore 字段忽略
// boolean ignore() default false;
@Mapping(target = "ignore", ignore = true)
4、编写Java方法表达式,使用自定义工具类进行字段值转变

ConverterUtil .class工具类

public class ConverterUtil {public static List<String> strToList(String str){return Arrays.asList(str.split(","));}
}

使用格式

@Mapping(target = "ids", expression = "java(ConverterUtil.strToList(user.getIds()))")
UserVo UserToUserVo(User user);
5、字段映射
// User的label  映射到 UserVo的value
@Mapping(source = "label", target = "value")
UserVo UserToUserVo(User user);
6、设置属性为常量或者默认值
// 设置常量
@Mapping(source = "id", target = "id", constant = "-1L")
UserVo UserToUserVo(User user);
// 设置默认值
@Mapping(source = "id", target = "id", defaultValue= "1024L")
UserVo UserToUserVo(User user);

4、后续

以上就是笔者目前在项目所用的一些记实,如果想了解更多,笔者找到一份比较详细的文章,用来参考
MapStruct之@Mapping注解的用法
官方文档

http://www.yayakq.cn/news/46563/

相关文章:

  • 上海网站建设公司排行可视化网站后台
  • 昆明哪些做网站建设的公司如何管理网站后台
  • 宜春网站建设公司联系方式网站建设课程设计心得体会
  • 六安建设厅网站定制网站建设公司排行
  • html5个人网站源码o2o网站制作公司
  • 导航网站设计方案个人做网站seo
  • 网站推广的措施有哪些wordpress自适应手机插件
  • 如何向搜索引擎提交网站868868域名查询
  • 网站网页打开的速度什么决定的厦门电商培训
  • 宿豫网站建设制作郑州网站建设找哪家
  • 如何做教育类网站dede网站头部不显示调用的名称
  • 泽成seo网站排名微信咋做自己的网站
  • 湖南网站推广建设公司有哪些做熟食的网站美食网站
  • 十年专业网站建设中国最大的家装网站
  • 南宁网站建设制作定制唐山制作网站的公司
  • 赤峰网站策划移动网站技术
  • 网站前台做哪些工作公司想为一个产品做多个网站
  • wordpress mv网站模板做网站什么是三网合一
  • 视频变成网站怎么做理财产品网站开发文档
  • 美橙极速建站系统厦门关键词优化网站
  • 电子商务网站建站目的合肥知名网站制作
  • wordpress 全站搜索网站托管服务协议
  • 漯河网站建设茂睿科技饶阳网站建设
  • 教学方面网站建设代理公司注册济南
  • 建设工程安全员教育网站wordpress 两个主题
  • 手机网站和pc网站杭州网站建设费用多少钱
  • asp网站免费完整源码seo站内优化教程
  • 重庆网站设计案例易语言网站怎么做
  • 网站建设 补充协议网站程序开发后怎么上线
  • 漯河公司做网站程序员自己做网站赚钱