这个问题起源于我和同事一次讨论,我说一个Do必须要有setter,同事说不用,结果打脸了,真的不需要一定要有setter。
我当时就纳闷了,怎么做到的呢?于是我翻了下源码
终于让我找到了
整个ResultSetHandler就不分析了,过程也并不复杂
public class SetFieldInvoker implements Invoker { private Field field; public SetFieldInvoker(Field field) { this.field = field; } @Override public Object invoke(Object target, Object[] args) throws IllegalAccessException, InvocationTargetException { field.set(target, args[0]); return null; }
对于没有setter方法的一个Do,在对他进行填充的时候,不是通过setter方式,而是直接对这个field操作