DefaultSqlSession#update() CachingExecutor#update()//执行更新flushCacheIfRequired()//执行增删改前,清除对应二级缓存CachingExecutor.delegate = SimplyExecutor//装饰模式SimplyExecutor#update()//调用父类模板方法BaseExecutor#update()//执行更新BaseExecutor#clearLocalCache()//清除一级缓存,LocalCacheBaseExecutor#d...
在MyBatis中,SqlSession 是执行SQL语句的主要接口。你可以通过 SqlSession 直接执行SQL语句,无论是查询、插入、更新还是删除操作。以下是如何使用 SqlSession 直接执行SQL的步骤,并附带代码片段进行佐证: 创建一个SqlSession实例: 首先,你需要通过 SqlSessionFactory 来获取一个 SqlSession 实例。SqlSessionFactory 通常是在...
MapperMethod#execute()//执行方法,最终还是在调用SqlSession接口 SqlSession#insert() SqlSession#update() SqlSession#delete() SqlSession#selectOne() SqlSession#selectList() SQL执行流程 查询SQL执行流程 主要步骤: selectOne/selectList SQL获取 参数设置 SQL执行 封装结果集 调用关系如下: DefaultSqlSession#selectOne(...
执行sql总览 首先还是来看下目前分析的代码所处的位置,具体的代码如下:之前也说过要使用mybatis操作数据库,在代码里面与mybatis相关的代码只需要三步:创建SqlSessionFactory对象,利用SqlSessionFactory对象创建SqlSession,最后利用SqlSession执行sql。到目前为止已经分析到最后一步,接下来详细分析sql是如果得到并执行的。Sq...
return mapperMethod.execute(sqlSession, args); } 从methodCache 获取对应 DAO 方法的 MapperMethod MapperMethod 的主要功能是执行 SQL 语句的相关操作,在初始化的时候会实例化两个对象:SqlCommand(Sql 命令)和 MethodSignature(方法签名)。 /** * 根据Mapper接口类型、接口方法、核心配置对象 构造MapperMethod对象 ...
执行sql语句 还是先来看一下执行Sql语句的时序图: 1、我们继续上面的流程进入execute方法: 2、这里面会根据语句类型以及返回值类型来决定如何执行,本人这里返回的是一个集合,故而我们进入executeForMany方法: 3、这里面首先会将前面存好的参数进行一次转换,然后绕了这么一圈,回到了起点SqlSession对象,继续调用selectLis...
创建执行器 创建SqlSession 那我们分别来看下这三者的具体执行。 2.1 获取连接 关于事务的我们之前说过了哈,我们这里简单回顾下,就是根据我们的环境配置的事务管理器信息以及数据源信息,根据 type 值去创建对应的事务工厂,然后从事务工厂获取连接,事务工厂其实也是从数据源中获取,我画个图简单回顾下哈: ...
SqlSession session = sqlSessionFactory.openSession(); 通过Spring 框架获取:SqlSession session = sqlSessionTemplate.getSession();一旦获得了 SqlSession 的实例,就可以使用它来执行 SQL 语句了。以下是执行查询语句的示例: 查询单个结果:User user = session.selectOne(“com.example.mapper.UserMapper.selectUserById...
//之前说了,从表面上来看,咱们是用sqlSession在执行sql语句, 实际呢,其实是通过excutor执行, excutor是对于Statement的封装 final Executor executor = configuration.newExecutor(tx, execType); //关键看这儿,创建了一个DefaultSqlSession对象 return new DefaultSqlSession(configuration, executor, autoCommit); ...