目录
mybatis知识
传统JDBC不足
- 没有连接池,耗费资源
- 硬编码,不利于维护
mybatis基础
-
mybatis之注解和xml优缺点
注解:不适合复杂sql,收集sql不方便,重新编译
XML:条件不确定、特殊字符需转义 -
mybatis的plugin
-
mybatis逆向工程。重要
mybatis核心应用配置与原理解析
mybatis核心概念
整体认识mybatis源码包
- session— 提供操作数据库的方法
- cache —缓存
- annotations— 注解相关
- binding— mapper相关
- builder— 解析xml相关
- parsing— 解析xml相关
- cursor —返回resultSet
- datasourcer— 数据管理
- exceptionsr— 异常
- executorr —执行器
- io classloader
- jdbc
- mapping —mapper相关封装
- plugin —拦截器
- reflection —反射相关
- scripting —数据厂家
- transaction —事务
mybatis基本流程类调用
- java代码引用mybatis
- 返回SqlSessionFactory
- 拿到sqlsession对我们的执行器进行初始化
- selectOne具体执行
mybatis流程记录
- IO流对xml文件进行获取,获得xmlConfigBuilder对象Parser
- 解析Parser ,也就是对配置文件中 的各配置(如typeAliaes,Mapper)进行解析
- mapper配置的解析是重点
- 用XNode对mapper内容进行解析(无须关注这个,其实就是解析XML文件)
- 获取配置文件中mappers获得结果集
- 解析完成获取Configuration对象(也就是mybatis-config.xml配置文件的所有信息)
- 通过Configuration去创建SqlSessionFactory
- 通过SqlSessionFactory.openSession()方法获得SqlSession
- 通过SqlSession来操作数据库
- 根据执行器类型和事务管理级别来获取执行器
- 执行器会加载XML中配置的plugin(责任链模式:订单系统、java异常底层也是责任链模式)
- 用SqlSession对执行器进行初始化完成
- SelectOne→DeafaultSession.SelectOne→SelectList
- 获取MapperStatement(MapperStatement对应的就是我们在XML中写的查询语句)
<select id="selectUser&