MyBatis 学习笔记
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。
Configuration | 管理mysql-config.xml全局配置关系类 |
SqlSessionFactory | Session管理工厂接口 |
SqlSession | SqlSession是一个面向用户(程序员)的接口。SqlSession中提供了很多操作数据库的方法 |
Executor | 执行器是一个接口(基本执行器、缓存执行器) 作用:SqlSession内部通过执行器操作数据库 |
MappedStatement | 底层封装对象 作用:对操作数据库存储封装,包括 sql语句、输入输出参数 |
StatementHandler | 具体操作数据库相关的handler接口 |
ResultSetHandler | 具体操作数据库返回结果的handler接口 |
MyBatis 加载mapper方式 ?
4种方式 class、package、resource、url。其中package优先级最高
MyBatis 缓存:https://www.cnblogs.com/yuluoxingkong/p/8205858.html
一级缓存是针对SqlSession的,但sqlSession执行commit,即增删改操作时会清空缓存。这么做的目的是避免脏读。(默认开启)
=> 实际开发中,MyBatis通常和Spring进行整合开发。Spring将事务放到Service中管理,对于每一个service中的sqlsession是不同的,这是通过mybatis-spring中的org.mybatis.spring.mapper.MapperScannerConfigurer创建sqlsession自动注入到service中的。 每次查询之后都要进行关闭sqlSession,关闭之后数据被清空。所以spring整合之后,如果没有事务,一级缓存是失效的。
二级缓存是针对mapper级别的缓存,二级缓存是跨SqlSession的,如果对该表的操作与查询都在不同一个namespace下,那么会发生数据的脏读。(默认关闭)适用场景:如果是读多写少,并且操作规范的情况下,是会提高查询效率的,一般很少使用 。
还没有评论,来说两句吧...