使用Mapper接口执行SQL
MyBatis 使用 非 Mapper 接口方式执行 CRUD
查询一条数据


查询多条数据


插入数据


更新数据


删除数据


执行插入、更新、删除后,需要手动提交事务

MyBatis 使用 非 Mapper 接口方式执行 SQL 的弊端

- 调用 SQL 依赖字符串字面值,容易出错
- 参数设置不清晰,容易出错
- 如果不小心输入错误,编译期间无法发现,执行时才会发现
MyBatis 使用 Mapper 接口方式执行 CRUD
第1步:创建 mapper 接口,mapper 接口的方法与 mapper xml 文件中的 SQL 对应

第2步:将 mapper xml 文件的 namespace 修改为 mapper 接口的全限定名

第3步:调用 SqlSession 的 getMapper 方法,传入 mapper 接口类型为入参,获取 mapper 接口的实现类实例。

第4步:调用获取的 mapper 接口实现类实例的方法,执行 SQL

getMapper 原理解析
- 调用 getMapper 方法时,MyBatis 使用动态代理技术生成 mapper 接口的实例。
- 生成的 mapper 接口实例会拦截所有方法调用,并将方法调用转发 SqlSession。
- SqlSession 调用与 mapper 接口对应的 mapper xml 中的 SQL 语句。

模拟代理实例的实现

