数据字典模块–MapStruct对象转换与加密处理

在src右键新建一个目录directory,根据提示两个包全选

必须和主包的包结构一样

测试类:MapStructTests

方法:void copyBean()

Bean拷贝:user对象包含所有属性,dto对象只有用户名和密码,我们要实现user对象拿到dto中的用户名和密码,将dto中的值赋值给user对象,必须是相同的属性

打印User可以看到User中的Username和Password属性有值,其他为空

如果属性多的话,每次一个一个调用太麻烦

不需要去手动调用get set方法,用bean拷贝的方式来获取,使用spring提供的bean拷贝的工具类,工具包叫做BeanUtils,方法叫做copyProperties(原对象,目标对象)

把一个有属性值的对象拷贝给没有属性值的user对象

将来不管有几个属性,都可以直接调用这个方法进行拷贝

前提:属性名称必须一样

MapStruct对象转换:复杂拷贝,带有逻辑

我们想要的是string类型的文字,不想要返回1或0,这样就是带有逻辑,需要MapStruct对象转换,这样自动将逻辑处理完,转换成String类型给我们返回,接下来学习MapStruct对象转换

MapStruct对象转换

映射:两个实体(bean对象)的映射

1.使用

引入MapStruct依赖

2.创建源对象和目标对象

源对象:TeacherDTO 目标对象Teacher

在test下的pai包下新建bean包,新建一个Teacher类,和TeacherDTO类

目标:将userId拷贝给id

userAge拷贝给age

其他属性一样可以自动拷贝

需要定义映射接口实现此方法

接口不能直接注入它是一套规则,我们需要先去mapper层里边拿到接口对应的字节码对象,才能进行注入

自定义方法userDTO转化成user对象

我们在bean中创建一个TeacherConvert接口对象


非对称加密(不常用):md5只能明文转换成密文

加密要单独引入依赖

后期密码还要加大防护性,一定不会使用md5

防止密码被破解



先获取dto中的明文,然后通过md5转换成密文

最后输出的密码是md5加密后的密码

可以设置默认default方法


嵌套对象映射(MapStruct)

在test类中的bean包下新建这几个类

订单类里嵌套了地址类

需求

1.定义一个地址转换类对象

2.获取当前接口的实现类对象

2.将address转换成addressVO,使用mapping注解

目标对象是address,拿到address对象中的省份和城市拼接在一起,输出AddressVO对象

1.将日期转换成orderVO中的String类型,自定义default方法

2.获取地址order.getAddress()

测试

集合映射




4.spring整合

在Mapper注解上添加componentModel="spring"

我们这里TeacherConvert中也有上面的集合映射使用,指定convert1进行转换

使用时直接注入即可

相关推荐
小坏讲微服务14 分钟前
刚发布一个月的JDK 27,为什么我建议你立刻升级?
java·开发语言·spring boot·spring·架构·求职招聘·springboot4
Song_RsHt2 小时前
Gateway(下):过滤器与统一鉴权
spring boot·spring·gateway
小蒜学长3 小时前
微信小程序-高校自习室管理系统(代码+数据库+LW)
java·spring boot·后端·微信小程序·自习室管理
撸串-研究生4 小时前
springboot福利院管理系统73979
java·spring boot·后端·福利院管理系统
十年Java程序媛5 小时前
Java 多线程基础与锁机制|进程线程、synchronized、volatile、Lock 面试全梳理
java·spring boot·面试
golang学习记6 小时前
最新版VS Code开发Spring Boot项目保姆级教程
java·spring boot·vscode·后端
code_slave(码畜)7 小时前
微服务架构落地:OpenFeign 服务远程调用 + 线程池隔离架构实战 —— 超时控制、重试机制、线程池隔离,防雪崩
spring boot·spring cloud·微服务·云原生·架构·openfeign
她的男孩8 小时前
Spring Boot 4 升级别只看编译绿:Forge Admin 在 Jackson、Tomcat JSON 限流、MP 包名与 Flowable 库上踩过的坑
java·spring boot·后端
Knight_AL8 小时前
别把 ThreadLocal 写进 Jackson Serializer
java·spring boot·spring
paopaokaka_luck8 小时前
校园新闻推荐系统(DeepSeek新闻助手、个性化推荐算法、 Redis热词排行榜、ECharts运营分析、互动与实时通知、新闻运营闭环)
java·spring boot·mysql·spring·tomcat·echarts·intellij idea