iBatis数据库字段映射到Java对象。
数据库执行完SQL后会返回执行结果,iBatis如何将查询出来的记录设置到account对象中呢?
和ParameterMap类似,填充返回信息需要的资源都已经包含在ResultMap中。当有了保存返回结果的ResultSet对象时,只需把列名映射到account对象的对应属性中。这个过程大体如下。
根据在ResultMap中定义的ResultClass创建返回对象,这里就是account对象。获取这个对象的所有可写的(也就是setter()方法的)属性数组。接着根据返回ResultSet中的列名去匹配前面的属性数组,把匹配结果构造成一个集合(resultMappingList),然后选择DataExchange类型、AccessPlan类型为后面真正的数据交换提供支持。根据resultMappingLIst集合从ResultSet中取出列对应的值,构成值数组(columnValues),这个数组的顺序就是在SQL中对应列名的顺序。最后把columnValues值调用account对象的属性的setter方法设置到对象中。这个过程可以用如下图所示的时序图来表示。