知识库
并发编程
  • 分类
  • 标签
  • 归档
友情连接

luoliang

吾生也有涯,知也无涯
并发编程
  • 分类
  • 标签
  • 归档
友情连接
  • Mybatis原理

    • 设计背景
      • mybatis的结构
        • Mapper的执行过程
          • Mybatis缓存
            • Mybatis插件
            weiluoliang
            2023-07-22
            随笔
            目录

            Mybatis原理

            # 设计背景

            Mybatis被设计出来解决我们日常操作数据库的痛点,使用最原始的JDBC去操作需要注册驱动,获取连接,获取statement,设置参数,处理结果集等繁琐而没有技术含量的工作,有它即可不用手动设置参数,手动处理结果集等繁琐操作,把会帮我们映射好。并且动态sql拼接也更加方便的实现

            # mybatis的结构

            mybatis主要包含以下组件:

            1. Configuration
            2. SqlSession
            3. Executor
            4. StatementHandler
            5. ParameterHandler
            6. ResultSetHandler
            7. TypeHandler
            8. MapperStatement
            9. SqlSource
            10. ResultMap
            11. BoundSql

            # Mapper的执行过程

            我们操作数据库一般都是通过写一个Mapper接口,剩下的操作都交给Mybatis去做了。Mapper并没有实现类,它是如何去生成一个实例,并且访问数据进行CRUD呢?当然是生成代理对象,通过动态代理拦截的方式实现具体的逻辑。

            看流程图(我这里是通过MyBatis-Plus查看debug):

            # Mybatis缓存

            一级缓存是session级别的缓存,默认是开启,但是在spring中如果没启动事务,每次获取的session都是新的,所以一级缓存会失效,只有开启了事务才会生效。

            美团技术关于缓存的解读: https://tech.meituan.com/2018/01/19/mybatis-cache.html (opens new window)

            # Mybatis插件

            #mybatis
            上次更新: 2024/03/26, 14:40:10
            最近更新
            01
            Linux常用命令
            09-04
            02
            SpringBoot启动脚本
            08-31
            03
            安装监控grafana
            08-30
            更多文章>
            Theme by Vdoing | Copyright © 2022-2024 Evan Xu | MIT License
            • 跟随系统
            • 浅色模式
            • 深色模式
            • 阅读模式