1.不是不需要实现类,而是这些mapper接口不要人为的去实现(即不需要程序员使用者去实现)。
2.它们的实现者是 MyBatis 的框架开发者,通过动态代理实现的
MyBatis 会在运行时动态创建mapper接口的实现类,这个过程是通过 Java 的反射机制和 CGLIB 库来完成的。
调用 Mapper 接口中的方法时,MyBatis 会根据接口方法的名称和配置文件中定义的 SQL 映射关系,动态地创建一个代理对象。这个代理对象在执行方法时,会负责执行对应的 SQL 语句,并将结果映射回 Java 对象
使用流程:
1.配置:定义 Mapper 接口+对应的 XML 文件/注解来指定 SQL 语句和映射关系。
MyBatis 配置文件(mybatis-config.xml)中会指定 Mapper XML 文件的位置或者注册 Mapper 接口。
2.启动
SQL 语句和映射关系加载至内存
3.创建 SqlSessionFactory
4.获取 SqlSession
5.动态代理
程序调用 Mapper 接口的方法时,MyBatis 使用 Java 的动态代理机制来创建一个代理对象。这个代理对象会拦截接口方法的调用。
6.执行 SQL 语句
代理对象拦截到接口方法后,根据方法名称找到SQL 语句和映射关系。
通过SqlSession执行SQL
7.结果映射
将执行结果映射为JAVA对象
8.返回结果
9.关闭SqlSession