Mybatis-Plus使用
由于现在springBoot 是主流,关注与SpringBoot集成的使用,官方文档有详细的说明文档。
MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生
我们把Mybatis的功能架构分为三层:
构建 | 描述 |
---|---|
SqlSession | 作为MyBatis工作的主要顶层API,表示和数据库交互的会话,完成必要数据库增删改查功能 |
Executor | MyBatis执行器,是MyBatis调度的核心,负责SQL语句的生成和查询缓存的维护 |
StatementHandler | 封装了JDBC Statement操作,负责对JDBC statement的操作,如设置参数、将Statement结果集转换成List集合 |
ParameterHandler | 负责对用户传递的参数转换成JDBC Statement所需要的参数 |
ResultSetHandler | 负责将JDBC返回的ResultSet结果集对象转换成List类型的集合 |
TypeHandler | 负责java数据类型和jdbc数据类型之间的映射和转换 |
MappedStatement | MappedStatement维护了一条<select | update | delete | insert>节点的封装 |
SqlSource | 负责根据用户传递的parameterObject,动态地生成SQL语句,将信息封 |
BoundSql | 装到BoundSql对象中,并返回表示动态生成的SQL语句以及相应的参数信息 |
Mybati s作为一个应用广泛的优秀的ORM开源框架,这个框架具有强大的灵活性,在四大组件
(Executor、StatementHandler、ParameterHandler、ResultSetHandler)处提供了简单易用的插 件扩
展机制。Mybatis对持久层的操作就是借助于四大核心对象。MyBatis支持用插件对四大核心对象进 行
拦截,对mybatis来说插件就是拦截器,用来增强核心对象的功能,增强功能本质上是借助于底层的 动
态代理实现的,换句话说,MyBatis中的四大对象都是代理对象
MyBatis所允许拦截的方法如下:
一级缓存默认开启
一级缓存是基于session的,执行插入、更新、删除等操作会清空缓存
简单分析:
1.sqlSession.getMapper(**Mapper.class); 生成mapper代理对象
2.执行mapper方法的时候,调用代理对象的invoke方法,即MapperProxy中的invoke
3.invoke方法中的execute方法通过各种判断,调用 sqlSession 接口中的方法
4.sqlSession 中会调用 executor 执行器接口中的方法