springboot集成mybatis-plus源码分析

springboot集成mybatis-plus源码分析,第1张

springboot集成mybatis-plus源码分析

本文介绍springboot-集成mybatis-plus,(又出现很多以Mybatis开头的配置类),启动时如何加载各个类,解析配置文件,生成接口代理类。sql执行器。

自定配置入口

1.找到自动配置类MybatisPlusAutoConfiguration,会看到

@Bean
@ConditionalOnMissingBean
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {}

这里给出了,如果自己没有配置SqlSessionFactory,这个配置就会生效。断点调试。

这个方法配置MybatisSqlSessionFactoryBean sqlSessionFactory = new MybatisSqlSessionFactoryBean(),里面设置dataSource,加载配置类信息MybatisPlusProperties,最后一行的factory.getObject(),方法,判断SqlSessionFactory==null ,会调用初始化方法afterPropertiesSet(),这个方法会构建SqlSessionFactory,

this.sqlSessionFactory = buildSqlSessionFactory();

进入方法,会看到这里解析xml,构建

MybatisConfiguration
MybatisXMLConfigBuilder

new DefaultSqlSessionFactory()

XMLMapperBuilder xmlMapperBuilder = new XMLMapperBuilder(..)

解析mapper.xml
xmlMapperBuilder.parse();

SqlSessionFactory创建完毕,执行sql查询的时候进入MybatisMapperProxy类,找到invoke方法

会执行MybatisMapperMethod的excute方法。执行查询的时候,会执行

CachingExecutor类

  @Override
  public  List query(MappedStatement ms, Object parameterObject, RowBounds rowBounds, ResultHandler resultHandler) throws SQLException {
    BoundSql boundSql = ms.getBoundSql(parameterObject);

//key==1862739912:3384727830:com.example.demo2.mybatisdemo.UserMapper.getUser:0:2147483647:SELECt COUNT(1) FROM t_user WHERe id > ?:1:MybatisSqlSessionFactoryBean

    CacheKey key = createCacheKey(ms, parameterObject, rowBounds, boundSql);
    return query(ms, parameterObject, rowBounds, resultHandler, key, boundSql);
  }

我自己代码是这样写的,里面有事务,在同一个session里查询2次,一级缓存才生效。否则在sqlSession提交的时候会清空一级缓存。

@Transactional
    public int getUser() {
        userMapper.getUser(1);
        return userMapper.getUser(1);
    }

 

 

 

 

 

 

 

 

 把事务去掉之后代码,一级缓存,在每次查询之后就被清空,一级缓存也没有用了。

    public int getUser() {
        userMapper.getUser(1);
        return userMapper.getUser(1);
    }

 

 

 

mybatis的Executor这里没有介绍,可以查看其他文章。到这里就完毕了。 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5697788.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存