抛出疑问
Mybatis-plus的确能让我们写少很多重复代码,非常好用。那么其中最方便的就是Mapper接口继承BaseMapper
就能获得增删改查的这个功能。那么这个功能的底层代码,究竟是怎么实现的呢?
原生Mybatis配置的原理
毕竟Mybatis-plus是Mybatis的加强,所以Mybatis-plus肯定是基于Mybatis原来的机制来扩展的,沿着这个思路,我们先搞清楚一个问题,就是原生的mapper.xml文件最后是怎么跟对应的Mapper接口产生联系的
。
既然是配置,那么在Mybatis里肯定有对应的配置类,这个类就是MappedStatement
。最终在Configuration
类中把MappedStatement
对象添加进mappedStatements
集合中进行管理。源码如下:
public class Configuration {
protected final Map<String, MappedStatement> mappedStatements = new StrictMap<MappedStatement>("Mapped Statements collection");
public void addMappedStatement(MappedStatement ms) {
mappedStatements.put(ms.getId(), ms);
}
}
假如有个mapper.xml文件定义如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">