# MyBatis

## Mybatis 使用步骤

1. 创建 mybatis-config.xml 配置文件，设置一些mybatis 的参数，比如和数据库的连接， mapper 声明
2. 通过 SqlSessionFactoryBuilder.build() 创建 SqlSessionFactory 对象
3. 通过 SqlSessionFactory 对象 创建 SqlSession 对象
4. SqlSession 对象执行 增，删，改，查，最后对记录进行提交或回滚
5. 关闭 SqlSession

## MyBatis 缓存

MyBatis 一级缓存默认开启，其作用域是每一个 SqlSession 对象，每一个 SqlSession 对象的查询结果都会被放入缓存，当这个 SqlSession 对象以后再次查询时就能直接从缓存中读取。特别的是当执行完 sqlSession.commit()操作以后，一级缓存会被清空。

MyBatis 二级缓存可以作用于多个 SqlSession 对象之间，起作用范围是同一个 namespace。

#### 二级缓存使用场景：

二级缓存一旦开启就默认整个 namespace 生效。但某些操作并不适合使用二级缓存，比如 查询出来的的结果很大，比如 SELECTALL, 这时候则需要使用 useCache="false" 参数。

## 什么是 动态 SQL ？

动态 SQL 是指根据参数数据动态组织 SQL 语句的技术。比如一句 SELECT 语句里面可能会出现多个限定条件，比如 可能会出现多个 WHERE 条件判断，也可能不会出现。 举个实际的例子就是逛淘宝，搜索"手机"，下面就会有一个筛选框，勾选筛选框里面的条件(比如价格2000以下，内存4G以上)，界面就会重新刷新，筛选出符合条件的手机。&#x20;
