Mybatis定义
MyBatis 是一款优秀的持久层框架,
它支持自定义 SQL、存储过程以及高级映射。
MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。
MyBatis 通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO 为数据库中的记录。
Mybatis底层原理
spring容器初始化:
读取配置文件(数据源配置),获取sqlsessionFactoy对象(单例)
连接池 通过 sqlsessionFactoy 工厂生产 n个 sqlsession 对象
代码调用:
dao层方法调用,通过连接池获取 sqlsession 对象
sqlsession建立connextion
方法调用通过映射获取mapper的sql语句
执行sql,返回结果集
sqlsessionFactory对象
一旦被创建,就应该一直存在
最佳作用域是整个应用
单例模式
sqlsession对象
特点:
线程不安全,千万不能线程共享
Mybatis缓存
前言:现在都是基于分布式的缓存,缓存都是针对业务而不是查询缓存
Mysql8.0官方都已删除查询缓存了
1级缓存
sqlsession级别
增删改 会失效
不同查询失效
不同xxx.xml会失效
2级缓存
namespace级别(一个xxxx.xml都会生效)
不同的请求在同一个mapper下缓存有效
只能对单表业务使用
多表或者多个mapper里的查询操作同一张表 都会带来问题
所以缓存还是用 缓存框架 来做
1