当我这样做时:
insert into .... values (...,#{object.intField, javaType=Integer},...)#
然后它正在工作 - 在数据库中此列包含null
- 正如预期的那样。它是如何在引擎盖下工作的?我的意思是,object
是空的,但是它有效。魔术在哪里?
答案 0 :(得分:0)
从 org.apache.ibatis.scripting.defaults.DefaultParameterHandler.setParameters(PreparedStatement)
方法解析参数值然后您正在寻找的魔法就在这里:method org.apache.ibatis.reflection.MetaObject.getValue(String) tokenizes参数名称字符串,在点上分割,并递归调用,直到到达链的末尾或直到当前元素为空。
之后我们回到一般情况:通过反射检索对象属性值:向下到 java.lang.reflect.Field 。