阶段3 1.Mybatis_06.使用Mybatis完成DAO层的开发_6 Mybatis中使用Dao实现类的执行过程分析-增删改方法
从测试类入手,断点调试
找到实现类,进入到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实现类的执行过程分析-增删改方法的更多相关文章
- 阶段3 1.Mybatis_06.使用Mybatis完成DAO层的开发_7 Mybatis中使用代理Dao的执行过程分析
另外一种情况,不写Mybits的dao实现类的情况. 切换工程到CRUD的工程.这里面是不写dao实现类的方式 进入到GetMaper里面.这里是创建代理对象 去找SqlSession的实现类Defa ...
- 阶段3 1.Mybatis_06.使用Mybatis完成DAO层的开发_1 Mybatis中编写dao实现类的使用方式-查询列表
就是自己写实现类的方式来开发 直接finish 把之前写的CRUD的代码复制到过来. 在把之前pom.xml里面的包的依赖也复制过来 复制到当前的pom.xml内 允许自动导入 以上步骤就是复制了一个 ...
- 阶段3 1.Mybatis_06.使用Mybatis完成DAO层的开发_5 Mybatis中使用Dao实现类的执行过程分析-查询方法1
继续运行testFindAll方法.把其他类的断点都删除掉. 只在这里加了断点,所以直接就跳转到这里了.RoutingStatementHandler里面的query方法 继续往下走,断点又回到了这里 ...
- 阶段3 1.Mybatis_06.使用Mybatis完成DAO层的开发_4 Mybatis中使用Dao实现类的执行过程分析-查询方法
delete方法没有并SqlSession的delete方法,而是调用的Upadte方法. 在测试类这里加断点. 实际的方法体内也加断点 运行测试方法,选择debug的方式 走到断点这里.会看到fac ...
- 阶段3 1.Mybatis_06.使用Mybatis完成DAO层的开发_3 Mybatis中编写dao实现类的使用-修改删除等其他操作
update和上面的Insert代码基本是一样的,只需要修改这里, 测试Update的方法 删除 findById 测试方法 findByName 测试方法 findTotal
- 阶段3 1.Mybatis_06.使用Mybatis完成DAO层的开发_2 Mybatis中编写dao实现类的使用-保存操作
再完善.saveUser的方法 测试保存的操作 报错了 SqlSession的insert的源码 我们在执行Insert的时候,并没有把user对象传过去 usersex改成sex 再次测试
- ssh_maven的搭建之dao层的开发
之前都是使用我们传统的方式进行引入jar包,现在我们使用maven进行管理依赖,这样,我们的jar就不需要我们进行管理,而且,我们的maven还可以进行项目构建,一个项目从编写源代码到编译,测试,运行 ...
- controller层负责创建类传递类给service;service层负责逻辑编写调用dao层 将编写后的类传递到dao层,保证事务的正确性;dao层负责数据的持久化
controller层负责创建类传递类给service:service层负责逻辑编写调用dao层 将编写后的类传递到dao层,保证事务的正确性:dao层负责数据的持久化
- 基于Mybatis的Dao层的开发
基于Mybatis的Dao层开发 SqlSessionFactoryBuilder用于创建SqlSessionFacoty,SqlSessionFacoty一旦创建完成就不需要SqlSessionFa ...
随机推荐
- 解析html,提取元素参数
r = s.get(loginurl, verify=False) dom = etree.HTML(r.content.decode("utf-8")) try: result[ ...
- java Class类的用法示例
@SuppressWarnings("unchecked") public void func() throws InstantiationException, IllegalAc ...
- 2019-11-29-dotnet-使用-Qpush-快速从电脑到手机推送文字
title author date CreateTime categories dotnet 使用 Qpush 快速从电脑到手机推送文字 lindexi 2019-11-29 08:58:57 +08 ...
- 新手 vim常用命令总结 (转)
转自 https://www.cnblogs.com/yangjig/p/6014198.html 在命令状态下对当前行用== (连按=两次), 或对多行用n==(n是自然数)表示自动缩进从当前行起的 ...
- Centos7下lvs负载均衡lvs-tun模式配置
一.架构 director:172.28.18.69 vip:172.28.18.70 real server1:172.28.18.71 real server2:172.28.18.78 二.两台 ...
- 递归算法几个实例---C/C++
//1.斐波那契数列 int fibo(int n) { || n==) { ; } else { ) + fibo(n-); } } //2.阶乘 int fac(int n) { || n==) ...
- windows环境下 RabbitMQ 安装时创建用户流程命令
https://blog.csdn.net/xiaojieblog/article/details/70332469
- Java中InputStream和String之间的转换方法
1.InputStream转化为String1.1 JDK原生提供方法一:byte[] bytes = new byte[0];bytes = new byte[inputStream.availab ...
- HDU-1083-Courses(最大匹配)
链接: https://vjudge.net/problem/HDU-1083#author=HUCM201732 题意: 题目大意: 一共有N个学生跟P门课程,一个学生可以任意选一 门或多门课,问是 ...
- SonarQube 7.7默认数据库连接方法
SonarQube7.7默认数据库为H2 embbed数据库 连接字符串:jdbc:h2:tcp://localhost:9092/sonar 用户名密码都为空