Chiriri's blog Chiriri's blog
首页
  • Java

    • JavaSE
    • JavaEE
    • 设计模式
  • Python

    • Python
    • Python模块
    • 机器学习
  • Golang

    • Golang
    • gRPC
  • 服务器

    • Linux
    • MySQL
    • NoSQL
    • Kubernetes
  • 项目

    • 传智健康
    • 畅购商城
  • Hadoop生态

    • Hadoop
    • Zookeeper
    • Hive
    • Flume
    • Kafka
    • Azkaban
    • Hbase
    • Scala
    • Spark
    • Flink
  • 大数据项目

    • 离线数仓
  • 青训营

    • 第四届青训营
  • HTML

    • HTML
    • JavaScript
  • Vue

    • Vue2
    • TypeScript
    • Vue3
    • Uni-APP
  • 数据结构与算法
  • C语言
  • 考研数据结构
  • 计算机组成原理
  • 计算机操作系统
  • Java基础

    • Java基础
    • Java集合
    • JUC
    • JVM
  • 框架

    • Spring
    • Dubbo
    • Spring Cloud
  • 数据库

    • MySQL
    • Redis
    • Elasticesearch
  • 消息队列

    • RabbitMQ
    • RocketMQ
  • 408

    • 计算机网络
    • 操作系统
    • 算法
  • 分类
  • 标签
  • 归档
  • 导航站
GitHub (opens new window)

Iekr

苦逼后端开发
首页
  • Java

    • JavaSE
    • JavaEE
    • 设计模式
  • Python

    • Python
    • Python模块
    • 机器学习
  • Golang

    • Golang
    • gRPC
  • 服务器

    • Linux
    • MySQL
    • NoSQL
    • Kubernetes
  • 项目

    • 传智健康
    • 畅购商城
  • Hadoop生态

    • Hadoop
    • Zookeeper
    • Hive
    • Flume
    • Kafka
    • Azkaban
    • Hbase
    • Scala
    • Spark
    • Flink
  • 大数据项目

    • 离线数仓
  • 青训营

    • 第四届青训营
  • HTML

    • HTML
    • JavaScript
  • Vue

    • Vue2
    • TypeScript
    • Vue3
    • Uni-APP
  • 数据结构与算法
  • C语言
  • 考研数据结构
  • 计算机组成原理
  • 计算机操作系统
  • Java基础

    • Java基础
    • Java集合
    • JUC
    • JVM
  • 框架

    • Spring
    • Dubbo
    • Spring Cloud
  • 数据库

    • MySQL
    • Redis
    • Elasticesearch
  • 消息队列

    • RabbitMQ
    • RocketMQ
  • 408

    • 计算机网络
    • 操作系统
    • 算法
  • 分类
  • 标签
  • 归档
  • 导航站
GitHub (opens new window)
  • Java基础

  • 框架

    • Spring
    • Dubbo
    • Spring Cloud
    • Mybatis
      • mybatis一级缓存和二级缓存
      • 二级缓存什么时候清理
      • mybatis sqlsession 是怎么管理的
      • mybatis类似的事务层框架了解吗?
      • mybatis 分页
      • mybatis中# 和$的区别
      • MyBatis传参有几种方式
      • 动态标签
      • 拦截器
      • mybatis 原理
      • mybatis 有哪些设计模式
      • mybatis和mybatis plus的区别?
      • mybatis连接池
      • Mybatis的执行流程
      • Mybatis延迟加载
  • 数据库

  • 消息队列

  • 408

  • 大数据

  • 面试
  • 框架
Iekr
2023-12-23
目录

Mybatis

# Mybatis

# mybatis 一级缓存和二级缓存

tag: 美团 、 卓望 、 数字马力 、 宁波银行

count:6

  • 一级缓存:基于 PrepetualCache 的 HashMap 的本地缓存,是默认开启的,其作用域就是 Session,当 Session 进行了 Close,Flush 后该 Session 中的缓存会被全部清空。
  • 二级缓存:其作用域是 namespace 和 mapper,其默认是不开启的,是基于 prepetualCache,hashmap 存储的。通过在 mybatis 的配置文件中设置 CacheEnabled 设置为 true, 在对应的 mapper 中添加标签 Cache。

# 二级缓存什么时候清理

当某个作用域 (一级缓存 (session)/ 二级缓存 (namespace)) 中进行了增删改操作时就会清除掉 select 中的缓存。

# mybatis sqlsession 是怎么管理的

tag: 美团

count:1

# mybatis 类似的事务层框架了解吗?

tag: 快手

count:1

as:

jap 和 hibernate

# mybatis 分页

tag: 快手 、 立白 、 百度

count:6

as:怎么配置 mybatis 插件比如说分页插件,批处理插件这些

分页实现原理,怎么优化

MyBatis 的分页是内存分页还是物理分页,分页插件的实现原理

# mybatis 中# 和 $ 的区别

tag: 联想 、 卓望 、 数字马力 、 亚信

count:15

as:mysql 传递参数用的符号 #与 $ 的 sql 拼接区别

mybatis 预编译

  1. #{} 主要就是做占位符的替换的,在 mybatis 中会使用 **? 占位 **,而 ${} 主要就是做文本替换的。替换 ${} 中的文本。
  2. #{} 数据的替换发生在 DBAS 之中,而 ${} 数据替换发生在 DBAS 之外。
  3. #{} 在做数据替换的时候会自动添加 '',而 ${} 数据替换的时候不会自动添加 ''。
  4. #{} 可以防止 SQL 的注入,而 ${} 不可以。

# MyBatis 传参有几种方式

tag: 贝壳

count:2

as:MyBatis 传参有哪几种方式,有什么区别

# 动态标签

tag: 数字马力 、 亚信

count:4

as:动态 sql if,foreach 这些使用要引入什么配置吗?

mybatis 的基本标签有多少?

# 拦截器

tag:

count:1

as:mybatis 的拦截器了解吗

# mybatis 原理

tag: 用友 、 快手

count:6

as:myBatis 的底层原理了解过吗包括它怎么去用,缓存构造器了解过吗

MyBatis 的 sql 执行原理 (核心是代理)

mybatisplus 是怎么实现 save、insert、select、delete 的操作的,底层原理是什么

# mybatis 有哪些设计模式

tag: 用友

count:1

as:

# mybatis 和 mybatis plus 的区别?

tag:

count:6

as:mybatis 和 mybatis plus 的区别?平时用哪个多?

为什么用 mybatis,除了 mybatis 还有什么 orm 框架,mybatis 和 hibernate 优缺点,如果给你优化 mybatis 怎么优化?

MyBatis Plus 有哪些增强

hiberate 和 mybatis 的区别

# mybatis 连接池

tag:

count:1

as:mybatis 连接池,用过什么数据源,了解他们之间性能的差距吗?

# Mybatis 的执行流程

  1. 读取 mybatis-config.xml 文件,里面就是数据库的配置和 mapper 的地址。

  2. 创建 SqlSessionFactory。

  3. 通过 SqlSessionFactory 创建对应的 SqlSession,就是项目和数据库的会话,SqlSession 包含执行 sql 语句的所有方法。

  4. 执行操作数据库的接口,Executor 执行器,同时负责缓存的维护。

  5. 在 Executor 执行器中的 MapperStatement 对象,当操作数据库的时候会将 Java 的类型转为数据库的类型,当输出结果的时候会将数据库的类型转为 Java 的类型。

image-20241009161856526

# Mybatis 延迟加载

  1. 延迟加载就是当需要使用数据的时候才去加载数据,不用数据得时候不会主动加载。

  2. Mybatis 支持一对一关联对象和一对多关联集合的延迟加载。

  3. 在 mybatis 的配置文配置文件中的 LazyloadEnabled 设置为 true 就开启了全局延迟加载。

底层

  1. 通过 GCLIB 的代理实现的。

  2. 当调用目标函数的时候,会调用拦截器的 invoke 方法,如果发现目标方法中的值为 null,则进行 sql 查询,在获取数据后通过 set 设置属性值,在后续调用目标方法时就有值了。

编辑 (opens new window)
上次更新: 2025/01/01, 10:09:39
Spring Cloud
MySQL

← Spring Cloud MySQL→

最近更新
01
k8s
06-06
02
进程与线程
03-04
03
计算机操作系统概述
02-26
更多文章>
Theme by Vdoing | Copyright © 2022-2025 Iekr | Blog
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式