MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架,其主要就完成2件事情:
-
- 封装JDBC操作
-
- 利用反射打通Java类与SQL语句之间的相互转换
MyBatis的主要设计目的就是让我们对执行SQL语句时对输入输出的数据管理更加方便,所以方便地写出SQL和方便地获取SQL的执行结果才是MyBatis的核心竞争力。
接口映射
在使用MyBatis的时候,都用的是Dao接口和XML文件里的SQL一一对应来进行使用的。那你是否思考过二者是如何建立关系的?
MyBatis会先解析这些XML文件,通过XML文件里面的命名空间(namespace)跟DAO建立关系;然后XML中的每段SQL会有一个id跟DAO中的接口进行关联。
Dao接口里的方法,是不能重载的,因为是全限名+方法名的保存和寻找策略
通常一个Xml映射文件,都会写一个Dao接口与之对应。Dao接口,就是人们常说的Mapper接口,接口的全限名,就是映射文件中的namespace的值,接口的方法名,就是映射文件中MappedStatement的id值,接口方法内的参数,就是传递给sql的参数。Mapper接口是没有实现类的,当调用接口方法时,接口全限名+方法名拼接字符串作为key值,可唯一定位一个MappedStatement。
如果配置了namespace,那么id是可以重复的,因为我们的Statement实际上就是namespace+id
举例ÿ