为什么MyBatis的Mpper接口不需要实现类?
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

浙公网安备 33010602011771号