MapperMethod是Mybatis中具体的数据访问执行方法入口,当mapper方法被调用的时候对应的MapperProxy会生成相应的MapperMethod并且会缓存起来,这样当多次调用同一个mapper方法时候只会生成一个MapperMethod,提高了时间和内存效率。每一个MapperMethod对应了一个mapper文件中配置的一个sql语句或FLUSH配置,对应的sql语句通过mapper对应的class文件名+方法名从Configuration对象中获得。
当执行MapperMethod的execute方法的时候,根据当前MapperMethod对应的mapper配置会执行Session的insert, update, delete, select, selectList, selectMap, selectCursor, selectOne或flushStatements方法。 具体执行Session对象的哪个方法判定如下:
Mapper节点 | session方法 |
insert | insert |
update | update |
delete | delete |
select | select: 方法返回void,并且包含resultHandler配置时 |
select | selectList:方法返回数 |