Mybatis
文章平均质量分 73
Mybatis源码阅读。
developer@liyong
GISer
展开
-
MyBatis-MappedStatement什么时候生成?QueryWrapper如何做到动态生成了SQL?
可以很清晰的看到QueryWrapper这个参数给我们内置了名称ew。那么怎么根据我们QueryWrapper里面的条件生成SQL的?前面我们提到继承BaseMapper的MappedStatement注册,这里面其实又根据不同的CommandType生成了不同的动态SQL语句。后面就是把真正的值填进去执行查询操作了。原创 2024-09-05 17:01:36 · 701 阅读 · 0 评论 -
MyBatis-SQL-语句执行流程
如下图所示,如果MethodCache里面存在方法,则判断这个方法是否为default方法,如果不是默认,会被当前的Mapper继承,如果是default方法则创建PlainMethodInvoker对象进行执行。确实是的,我看个配置默认是true,而官网说true是开启二级缓存,可能不太一样。我们可以看到查询以后就被缓存了,这里的缓存是可以配置的有两种方式。以查询列为例子会转到SqlSesson,这里真正的类名是SqlSessionTemplate,它也实现了SqlSesson接口。原创 2024-09-02 22:09:11 · 691 阅读 · 0 评论 -
Mybatis-Mapper扫描 与 代理
然后我们又可以看到MapperScannerConfigurer实现了BeanDefinitionRegistryPostProcessor接口,往上就是BeanFactoryPostProcessor,在IOC刷新的时候FactoryPostProcessor会被调用,所以核心工作都是MapperScannerConfigurer来完成。那如果我们没有写@MapperScan呢?Scanner在做扫描的时候最终调用的是父类的方法,并且我们可以看到,MapperScan配置的包路径在这里出现。原创 2024-09-02 14:36:02 · 776 阅读 · 0 评论 -
源码阅读-SpirngBoot Mybatis 自动配置
ObjectProvider为我们提供了拓展,我们可以自定义一些插件或者类型转换器,同时也可以定义一些Customizer用来配置SqlSessionFactoryBean,MybatisPlusProperties等。可以看到我们在MybatisPlusAutoConfiguration就能拿到这个TypeHandler,这是为我们保留的拓展点,方便我们进行自定义拓展,我们也要从中学习这种设计。SqlSessionFactory做的事情非常的多,我们慢慢来看。原创 2024-08-31 17:25:57 · 429 阅读 · 0 评论