从测试类入手,断点调试
找到实现类,进入到insert方法里面
这里是SqlSession的接口里面的方法。
我们需要找SqlSession的实现类。
DefaultSqlSession
里面有两个insert方法,第一个insert执行的是第二个insert方法,德尔格insert方法又执行的是下面的update方法
delete最终执行的也是update方法
我们的update方法传了两个参数
所以他最终执行的是这里两个参数的
update再往后走就是executor.update方法。也就是不管执行增删改,最终都会归到这个executor对象
delegate.update
又回到了Executor里面的update
在executor的父类BaseExecutor里面有update方法。里面调用了一个叫做doUpdate的方法
doUpdate是一个抽象方法,它是没有具体代码的。于是就要找BaseExecutor的子类
、
BaseExecutor的子类SimpleExecutor
SimpleExecutor里面就会有一个doUpdate方法。里面又调用了handler.update
handle就是StatementHandler
RoutingStatementHandler里面的update方法
RoutingStatementHandler里面的update方法 最终调用的是PreparedStatementHandler
在这里传统的jdbc操作就出来了。其实最终执行的也是PreparedStatement的execute方法
前面不管使用update、delete、insert最终都是update方法执行 ,也就是PreparedStatement的execute方法。
所以在实际开发过程中,其实我们只要使用一个update方法就可以实现操作。当然他系统其它的对应方法我们也是拿过来用
阶段3 1.Mybatis_06.使用Mybatis完成DAO层的开发_6 Mybatis中使用Dao实现类的执行过程分析-增删改方法
推荐阅读
- Asp.NET MVC 中使用 SignalR 实现推送功能
- 支付宝接口程序、文档及解读(ASP.NET)
- Tomcat启动报内存溢出错误:java.lang.OutOfMemoryError: PermGen space异常 解决
- c# Winform PropertyGrid 实现下拉框 多选
- 递归按照1 1 2 3 5 8 13 21 34 55规则写出算法
- .NET Core微服务使用Consul实现服务注册/发现/健康检查
- C#23种开发模式,陆续完善中
- C#运算符大全_各种运算符号的概述及作用
- Windows环境下RabbitMQ 使用127.0.0.1和localhost访问正常换IP地址无法连接解决方案
- oracle 表误更新 (flashback )闪回操作