栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

springboot集成mybatis-plus源码分析

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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这里没有介绍,可以查看其他文章。到这里就完毕了。 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/697656.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号