MyBatis MetaObject.setValue 方法源码深度剖析MetaObject.setValue(String name, Object value)是 MyBatis 反射工具中用于设置对象属性值的重要方法。它不仅支持简单的属性赋值,还能处理嵌套路径(如user.address.city)、集合/数组索引(如roles[0].roleName),并且在路径中的中间对象为null时能够自动创建对象(通过ObjectFactory)。本文将深入分析setValue的实现原理、递归逻辑和异常处理。一、setValue 方法概览// MetaObject.javapublicvoidsetValue(Stringname,Objectvalue){objectWrapper.set(name,value);}与getValue类似,setValue将操作委托给内部的ObjectWrapper(BeanWrapper、MapWrapper或CollectionWrapper)。不同实现类的set方法会根据数据结构的特点,采用不同的策略来处理属性路径。二、核心流程图