Spring-数据绑定

Spring 数据绑定使用场景

Spring BeanDefinition 到Bean实例创建
Spring 数据绑定(DataBinder)
Spirng Web 参数绑定(WebDataBinder)

Spirng 数据绑定组件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
基本实现方式:

public class DataBinderDemo {
    public static void main(String[] args) {
        Person person = new Person();
        DataBinder dataBinder = new DataBinder(person, "person");
        Map<String, Object> source = new HashMap<>();
        source.put("id", 1);
        source.put("name", "小马哥");
        PropertyValues propertyValues = new MutablePropertyValues(source);
        dataBinder.bind(propertyValues);
        System.out.println(person);
    }
}

忽略未知属性:

public class DataBinderDemo {
    public static void main(String[] args) {
        Person person = new Person();
        DataBinder dataBinder = new DataBinder(person, "person");
        Map<String, Object> source = new HashMap<>();
        source.put("id", 1);
        source.put("name", "小马哥");
        // 忽略未知属性 也就是说不会有错误只是忽略不存在的属性
        source.put("age", 18);
        PropertyValues propertyValues = new MutablePropertyValues(source);
        dataBinder.bind(propertyValues);
        System.out.println(person);
    }
}

处理嵌套属性:

public class Person implements BeanNameAware {
    private Long id;
    private String name;
    private Inner inner;
}
public class DataBinderDemo {
    public static void main(String[] args) {
        Person person = new Person();
        DataBinder dataBinder = new DataBinder(person, "person");
        Map<String, Object> source = new HashMap<>();
        source.put("id", 1);
        source.put("name", "小马哥");
        // 框架内部帮我们创建了对象并且往里面push了一个值
        source.put("inner.name", "李勇");
        PropertyValues propertyValues = new MutablePropertyValues(source);
        dataBinder.bind(propertyValues);
        System.out.println(person);
    }
}

在这里插入图片描述
通过配置一些参数改变默认的方式:

public class DataBinderDemo {
    public static void main(String[] args) {
        Person person = new Person();
        DataBinder dataBinder = new DataBinder(person, "person");
        Map<String, Object> source = new HashMap<>();
        source.put("id", 1);
        source.put("name", "小马哥");
        // 忽略未知属性
        source.put("inner.name", "李勇");
        PropertyValues propertyValues = new MutablePropertyValues(source);
        dataBinder.bind(propertyValues);
        // 是否忽略未知字段 这个时候会抛出异常
        dataBinder.setIgnoreUnknownFields(false);
        dataBinder.setIgnoreInvalidFields(false);
        // source.put(inner, new Inner()) 如果改为false 不用于上面这里需要这样写
        dataBinder.setAutoGrowNestedPaths(false);
        System.out.println(person);
    }
}

指定必须字段:

dataBinder.setRequiredFields("name", "id");

获取绑定结果:

// 结果包含了错误信息 和 文案信息
BindingResult bindingResult = dataBinder.getBindingResult();

BeanWrapper

在这里插入图片描述

Java Beans 如果操作属性

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值