- 博客(5)
- 收藏
- 关注
原创 MyBatis延迟加载
延迟加载如何使用Setting 参数配置设置参数描述有效值默认值lazyLoadingEnabled延迟加载的全局开关。当开启时,所有关联对象都会延迟加载。 特定关联关系中可通过设置fetchType属性来覆盖该项的开关状态。true、falsefalseaggressiveLazyLoading当开启时,任何方法的调用都会加载该对象的所有属性。否则,每个属性会按需加载(参考lazyLoadTriggerMethods).true、falsefalse (tru
2020-09-30 14:23:12 269
转载 Mybatis插件
原理(JDK动态代理+责任链设计模式)它有个代理类Plugin这个类同样会实现了InvocationHandler接口,当我们调用ParameterHandler,ResultSetHandler,StatementHandler,Executor的对象的时候,就会执行Plugin的invoke方法,Plugin在invoke方法中根据@Intercepts的配置信息(方法名,参数等)动态判断是否需要拦截该方法.再然后使用需要拦截的方法Method封装成Invocation,并调用Interceptor的
2020-09-29 16:54:05 160
原创 Mybatis的一级、二级缓存
一级缓存Mybatis对缓存提供支持,但是在没有配置的默认情况下,它只开启一级缓存,一级缓存只是相对于同一个SqlSession而言。所以在参数和SQL完全一样的情况下,我们使用同一个SqlSession对象调用一个Mapper方法,往往只执行一次SQL,因为使用SelSession第一次查询后,MyBatis会将其放在缓存中,以后再查询的时候,如果没有声明需要刷新,并且缓存没有超时的情况下,SqlSession都会取出当前缓存的数据,而不会再次发送SQL到数据库。级缓存的生命周期有多长?a、M
2020-09-29 15:47:34 162
原创 Mybatis的Executor执行器
Executor功能概述每一个sql语句的执行都会先到Executor执行器中在调用相应StatementHandler执行jdbc操作。源码如下SimpleExecutor中的代码片段public <E> List<E> doQuery(MappedStatement ms, Object parameter, RowBounds rowBounds, ResultHandler resultHandler, BoundSql boundSql) throws SQLExc
2020-09-29 15:03:59 373
原创 Mybatis动态sql的执行原理
mybatis可以通过两种方式实现动态SQL,通过XML配置SQL,也可以使用注解的方式配置。两种不同的方式,执行的逻辑都不一样。1. 通过XML配置实现动态SQL构建SqlSessionFactory对象时,解析mapper.xml文件,XMLStatementBuilder.parseStatementNode()根据不同的SQL标签()生成对应的MappedStatement对象,存放在Configuration.mappedStatements集合中。 然后遍历主标签里所有节点生成对应的
2020-09-28 19:26:04 2335
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人