SpringMVC数据类型转换方法总结

本文详细介绍了SpringMVC中处理数据类型转换的三种方法:1) 自定义转换器Convert和ConvertFactory;2) 在@Controller类中使用@InitBinder注册属性编辑器;3) 在POJO字段上添加注解。通过实现WebMvcConfigurer接口添加转换器,利用PropertyEditor和WebDataBinder进行类型转换。@InitBinder注解可以解决Date类型转换问题,注册CustomDateEditor以自定义日期格式。
摘要由CSDN通过智能技术生成

目录

一、类型转换的三种方法

1、自定义转换器Convert,ConvertFactory

2、 @Controller类中添加@InitBinder方法-注册属性编辑器

3、 POJO字段添加注解:

二、自定义转换器Convert,ConvertFactory

1、 Convert,ConvertFactory两个功能接口

2、 实现WebMvcConfigurer接口,实现addFormatters方法:注册转换器。

3、Convert接口

4、ConverterFactory接口

三、@Controller类中添加@InitBinder方法-注册属性编辑器

1、介绍

2、PropertyEditor属性编辑器与WebDataBinder

3、 @InitBinder注解介绍

4、 @InitBinder注解解决Date类型转换

5、@InitBinder也可以用于参数绑定


一、类型转换的三种方法

1、自定义转换器Convert<S,T>,ConvertFactory<S,R>

2、 @Controller类中添加@InitBinder方法-注册属性编辑器

3、 POJO字段添加注解:

         如Date字段添加@DateTimeFormat(pattern = “yyyy-MM-dd”)

二、自定义转换器Convert<S,T>,ConvertFactory<S,R>

1、 Convert<S,T>,ConvertFactory<S,R>两个功能接口:

  • 当确定是某一具体类型转换时,只需要实现Convert<S,T>即可;

  • 当确定是某一类类型转换,需要通过实现ConvertFactory<S,R>实现一个转换器工厂,这个转换器工厂中,调用一个带有泛型的Convert<S,T>的转换器,如Converter<String, T>。2、将转换器注册到SpringIoC容器中:

2、 实现WebMvcConfigurer接口,实现addFormatters方法:注册转换器。

@Configuration

public class WebMvcConfig implements WebMvcConfigurer {
@Autowired
private BaseEnumConvertFactory enumConvertFactory;
@Autowired
private DateConvert myDateConvert;
    @Override

    public void addFormatters(FormatterRegistry registry) {

        registry.addConverter(myDateConvert);//String-Date转换器

        registry.addConverterFactory(enumConvertFactory);//自定义工厂转换器

    }

}

3、Convert<S,T>接口

只有一个convert(S source)方法,实现该接口并实现convert方法即可;只能实现特定的两个类之间的转换。如String和Date之间的转换可以。

@FunctionalInterface
public interface Converter<S, T> {
   @Nullable
   T convert(S source);
}
public class DateConverter implements Converter<String, Date>{

       @Override

       public Date convert(String source) {

              if(source != null) {

                     SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

                     sdf.setLenient(false);

                     try {

                            return sdf.parse(source); //将字符串解析成日期类型

                     } catch (ParseException e) {

                            e.printStackTrace();

                     }

              }

              return null;

       }

4、ConverterFactory<S, R&g

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值