基于springboot的自定义converter例子

JPA - @Convert属性映射转换器 目录前言具体实现Map与JSON的属性转换器List与JSON属性转换器实体应用效果图 前言 @Convert属性转换器用于数据库属性类型与java存储的类型做转换,其方便之处在于存储与读取的时候能自动转换,如下业务场景: 业务对象存在一个Map或List属性,存入数据库时需保存为json字符串,返回前端时以对象来返回。 @Convert属性转换器需实现AttributeConverter<X, Y>接口,第一个泛型类型为Entity字段类型,第二个泛型类型为数据库字段类型。 具体实现 Map 阅读详情

对于converter的理解、原理转载于:https://blog.youkuaiyun.com/cold___play/article/details/102839502?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162460403216780357268637%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=162460403216780357268637&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-3-102839502.pc_search_result_before_js&utm_term=converter&spm=1018.2226.3001.4187

例子:

导入依赖

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>

person和pet存在级联关系的javabean

@NoArgsConstructor
@AllArgsConstructor
@ToString
@Data
public class Person {
    private String name;
    private Integer age;
    private Date birth;
    private Pet pet;
}
@AllArgsConstructor
@NoArgsConstructor
@Data
public class Pet implements Serializable {
    private String name;
    private Integer age;

}

html页面,使用thymeleaf模板引擎

    <form method="post" th:action="@{/savePerson}">
        姓名:<input type="text" name="userName" value="zhangsan"><br>
        年龄:<input type="text" name="age" value="18"><br>
        生日:<input type="text" name="birth" value="2019/12/10"><br>
<!--        宠物姓名:<input type="text" name="pet.name" value="阿猫"><br>-->
<!--        宠物年龄:<input type="text" name="pet.age" value="5"><br>-->
        宠物:<input type="text" name="pet" value="阿猫,3"><br>
        <button type="submit" >保存</button>
    </form>

配置类:WebMvcConfigurer

@Configuration(proxyBeanMethods = false)//放的组件没有依赖 用false快速
public class WebConfig /*implements WebMvcConfigurer*/ {
    /*
    第②种:开启矩阵变量功能
    WebMvcConfigurer定制化SpringMVC的功能
     */
    @Bean
    public WebMvcConfigurer webMvcConfigurer(){
       return new WebMvcConfigurer() {
           @Override
           public void addFormatters(FormatterRegistry registry) {
               registry.addConverter(new Converter<String, Pet>() {

                   @Override
                   public Pet convert(String source) {
                       //阿猫,3
                       if(!StringUtils.isEmpty(source)){
                           Pet pet = new Pet();
                           String[] split = source.split(",");
                           pet.setName(split[0]);
                           pet.setAge(Integer.parseInt(split[1]));
                            return pet;
                       }
                       return null;
                   }
               });
           }
       };
    }
}

controller层

    @ResponseBody
    @PostMapping("/savePerson")
    public Person savePerson(Person person){
        return person;
    }

测试:

SpringBoot---web-->>自定义converter【类型转换器】响应原理【使用添加converter配置指定类型转换,接收请求参数】(7) 自定义converter【类型转换器】响应原理【使用添加converter配置指定类型转换,接收请求参数】 在之前的自定义参数接收请求参数时,分析为自定义参数的内部属性赋值时,在复制过程中会调用一个WebDataBind,在这个里面会调用到很多个converterbinder,这些binder在处理自定义参数流程中的为参数赋值的步骤中被调用,然后从很多converter里面找到能处理当前的请求参数和控制参数之间关系的转换器converter,拿到后用它将请求参数解析,完成操作请求参数,并将结果相应在页面上 阅读详情

相关推荐

【SpringBoot笔记35】SpringBoot自定义Converter转换器和Formatter格式化器

Converter是Spring3.0开始提供的一个类型转换器接口,使用这个接口可以将一种数据类型转换成另外一种数据类型,注意:这个接口是位于org.springframework.core.convert.converter.Converter包里面的,别导入错了。Converter接口中只提供了一个【convert()方法】,该方法就是将源对象的数据类型,转换成目标对象T的数据类型,如果类型不能转换,那么就会抛出非法参数异常。

✅ Java 开发工程师 1133

2023-3-9 @Converter和Enum(枚举)学习

@Converter和Enum学习

m121388的博客 1157

PCB工艺-SI9000使用教程

本文介绍了阻抗计算工具SI9000的使用方法,重点讲解了微带线与带状线的区别、共面阻抗概念及参考面选择。通过USB差分走线实例,详细说明了如何选择计算模型、填写参数并确定线宽线距。文章还提供了层叠设计资料和工厂常规阻抗表格作为参考,建议制板时标注需控阻抗的线路供板厂调整。最后简单提及了嘉立创阻抗计算工具作为备选方案。

weixin_50120208的博客 2028

@Convert 注解在jpa中进行查询的注意事项

@Convert 注解在 jpa 中进行查询的使用方法

m0_38137988的博客 1729

OPC DCOM详细配置方法 - 不关防火墙不换登陆用户

1. 前言   OPC DCOM的设置是实现跨网络OPC通信的基础,现有的一些OPC DCOM配置教程虽然讲解了如何配置DCOM,但没有讲清楚为什么要这么做,而且各个教程涉及的配置方法也不尽相同。   为了彻底搞清楚OPC DCOM的配置过程,我重新做了两台机器的系统,一台是Windows 7 32位,一台是Windows 10 64位,并且重零开始完整的测试了正常运行OPC DCOM所需的最少的...

steventian72的博客 3万+

薄膜电容寿命预测全解析:从理论到实践,5步搞定可靠性评估

本文全面解析薄膜电容寿命预测的理论与实践,提供五步可靠性评估流程,涵盖温度应力、电压应力等关键因素分析,并分享提升寿命的实用技巧。特别适用于新能源、电动汽车等领域的设计工程师,帮助准确预测薄膜电容在实际工况下的使用寿命。

weixin_33712987的博客 436

@Convert 设置自定义属性转换器 AttributeConverter

通过 @Convert 注解指定自定义转换器,可用于实体属性类型与数据库字段类型之间的相互转换,便于将数据存储至数据库或从数据库读取数据。 @Repeatable(Converts.class) @Target({METHOD, FIELD, TYPE}) @Retention(RUNTIME) public @interface Convert { Class converter() de...

Orcas 2637

Flink CDC 1.18.1 Oracle 数据同步到postgresql

8、修改Flink的配置文件,主要是各种服务的绑定地址,默认为localhost,统统改为0.0.0.0,如:rest.address: 0.0.0.0 #localhost。将flink-sql-connector-oracle-cdc-3.0.1.jar复制到flink-1.18.1/lib目录中。6、下载 flink-connector-jdbc-3.1.1-1.17.jar,postgresql-42.7.3.jar。7、安装postgresql就不说了,相信你已经有了数据库了。

ynzhangyao的专栏 1800

JAVA实体Do-Dto转换类 Converter

** JAVA实体Do-Dto转换类 Converter ** 第一@Mapper注解 @mapper注解中包含了很多属性 componentModel 是设置我们可以在其他的类中根据@Autowired注入相对应的Converter,不加这个注解的话就需要XXXConverter.INSTANCE.XXX(XXX);这种格式 imports 我们可以通过它引入需要的类 source 可以通过我们内部调用赋值给其他的属性 @Mapper(componentModel = "spring", import

ZskXiaokang的博客 2134

蓝桥杯单片机学习13——NE555方波发生器&频率测量

NE555详解、引脚图介绍、原理图及工作原理讲解、方波产生的原理、定时器测量频率的原理及使用方法、代码实现

weixin_67907028的博客 1万+

lift off工艺为什么常用蒸发的方式镀膜?

电子束蒸发中,蒸发物质从源头直接升华并沿直线路径沉积到晶圆上,它可以避免金属在掩模侧壁的覆盖,只在表面进行沉积。在镀膜结束后,在进行光刻胶剥离时,去胶液无法与光刻胶接触反应,导致光刻胶剥离很困难。欢迎加入我的半导体制造知识星球社区,目前社区有1900人左右。我观察到晶圆厂中lift off工艺,镀膜都是用的电子束蒸发的方式,很少有用磁控溅射的方式,为什么?需要增加撕胶工序,将胶面上覆盖的膜层撕掉,使光刻胶露出,这样才容易剥离。上图为磁控溅射的膜层截面图,去胶液很难突破侧壁膜层,进行反应。

1688

springboot 自定义转换器(converter)

springboot自定义转换器(converter) 应用:实现一对一转换,如将字符串转换为pojo、枚举等 *********************** 相关类与接口 Converter @FunctionalInterface public interface Converter<S, T> { @Nullable T convert(S source); //将类型S的对象转换为类型T的对象 } ...

weixin_43931625的博客 8469

自定义载板RK3588HDMI输入配置完整解决方案

✅ HDMI输入信号检测✅ 自动时序识别(支持1080p@60Hz等标准格式)✅ V4L2视频设备接口✅ 实时视频流捕获✅ H.264编码录制✅ HDCP内容保护支持问题根因识别:发现了hdmim1模块资源冲突的本质问题硬件设计理解:明确了Orange Pi 5 Plus的真实硬件设计意图功能实现:成功启用HDMI输入功能,替代了无法使用的HDMI1输出完整验证:建立了从硬件检测到视频录制的完整测试流程。

梁俊星的博客 1273

SpringBoot配置LocalDateTime转Long的自定义Converter不生效

这里写自定义目录标题SpringBoot配置LocalDateTime转Long的自定义Converter不生效解决方式总结 SpringBoot配置LocalDateTime转Long的自定义Converter不生效 今天玩mybatis-plus时默认生成的entity的日期类型是LocalDateTime,但是在controller中返回时SpringBoot给转成了一个数组,前端格式化有点问题。并且当前端请求后端时,Long转LocalDateTime直接报错。 网上找了很多资料,比如重写exten

yan245709的博客 2787

信息安全管理与评估赛题解析-单机取证(含环境)

链接:https://pan.baidu.com/s/1OMzIq884dW2vAiUp0k2Ppg。链接:https://pan.baidu.com/s/1i5daMqhD53wYeQ6hYzRK6Q。链接:https://pan.baidu.com/s/1QFAjdQZK4sJ-gGRP42XPKA。链接:https://pan.baidu.com/s/1BSXvqN2ZGCQXewgFULoeyQ。链接:https://pan.baidu.com/s/1g9zu5ngBz_KMjW1eBMkJAw。

Brucye 1835

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

java converter转换器_springboot 自定义转换器(converter)

springboot自定义转换器(converter)应用:实现一对一转换,如将字符串转换为pojo、枚举等***********************相关类与接口Converter@FunctionalInterfacepublic interface Converter {@NullableT convert(S source); //将类型S的对象转换为类型T的对象}Converter...

weixin_42489714的博客 2840

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

SpringBoot 自定义格式转换器Converter

SpringBoot项目中,可以通过注解@Configuration注解,将WebMvcConfigurer通过@Bean注解注册到IOC容器中替换原本的WebMvcConfigurer实例,再注册之前可以通过重写其中的方法替换原本的组件,本篇文章就进行转换器 Converter 的定制操作。它可以将一个Object类转换为另一个Object类。

m0_70703282的博客 1361

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

springboot自定义Converter和Formatter

Converter和Formatter(pojo参数绑定解析器) 当我们在controller方法的入参为一个javabean类型并且没有使用任何注解进行标注,springboot将会使用ServletModelAttributeMethodProcessor方法处理器对请求参数和javaBean对象的属性进行绑定,在ServletModelAttributeMethodProcessor内部会调用参数转换器将请求参数与javaBean的属性对象进行类型转换再使用反射进行参数绑定,例如 请求参数时stri

剪刀手何金银的技术博客 1614

SpringBoot中Formatter和Converter用法和区别

功能区别: 两者的作用一样,都是类型转换。 org.springframework.format.Formatter只能做String类型到其他类型的转换。 org.springframework.core.convert.converter.Converter可以做任意类型的转换。 Converter是一般工具,可以将一种类型转换成另一种类型。例如,将String转换成Date,或者将Long转...

不能如期而至的专栏 8919

springboot:自定义converter

1、首先引入一个小demo 创建两个实体类Person,Pet @Data public class Person { private Integer id; private String name; private Pet pet; } @Data public class Pet { private String name; private Integer age; } 创建测试页面index.html <!DOCTYPE html> &

dfdvf的博客 1237

springboot 接收url参数实现一对一自定义转换器Converter.

尽管SpringMVC给我们提供了我们一部分获取参数的规则,但有时候我们想在路径中放入一个对象的参数,这时候SpringMVC就难以支持了.所以这时候我们需要通过自定义一个转换器来达到目的

Alone_up的博客 1070

SpringBoot-自定义转换器converter

概述 场景应用:自定义参数解析器,把接收到的字符串参数解析成自定义的对象。 项目目录结构 1.创建实体类 Car.java package com.corner.boot.bean; import lombok.Data; import org.springframework.stereotype.Component; @Data @Component public class Car { private String brand; private double pric

H_Corner的博客 1004

SpringBoot自定义converter转换器

我们直接用一个小demo举例子 创建两个实体类Person和Pet,其中Person类中包含Pet属性,这里使用了lombak,就不用写get/set等方法了 @Data public class Person { private Integer id; private String name; private Pet pet; } @Data public class Pet { private String name; private Integer ag

ManonLiu 1528

springboot的Converter和HttpMessageConveter

详细解析springboot的Converter和HttpMessageConveter

hjji12的博客 1147

java 自定义 转换器_springboot 自定义转换器(converter)

springboot自定义转换器(converter)应用:实现一对一转换,如将字符串转换为pojo、枚举等***********************相关类与接口Converter@FunctionalInterfacepublic interface Converter {@NullableT convert(S source); //将类型S的对象转换为类型T的对象}Converter...

weixin_42285866的博客 641

SpringBoot中的Converter解密,强大!

大家好,我是路人,这是 SpringMVC 系列第 30 篇。本文将讲解 Spring 中的另外一个知识点:SpringMVC 中转换器Converter的使用。好陌生啊,这玩意是干啥的呢...

路人甲Java 2718
上一篇: 让SpringMVC接收多个对象 4种方法
下一篇: springboot内容协商策略
saving178
博客等级 码龄8年 0粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值