mybatis与jdbc对比
1)jdbc本身没有数据库链接池,程序运行时需要多次创建关闭链接池;mybatis自身支持链接池;
2)jdbc将sql写到程序中,修改sql需重新编译程序;mybatis将sql配到xml配置文件中,无需重新编译
3)jdbc对于返回结果resultmap需要手动处理;mybatis会将resultmap转换为java对象;
mybatis的功能架构分为三层:接口层,数据处理层和基础支撑层
接口层:主要是和数据层进行交互,提供给外部的接口api;以使用mapper接口为例,将配置文件中的每一个节点抽象为一个mapper接口,这个接口中声明的方法和xml中的id对应;paramtertype为方法的入参类型,resultmap为返回类型;
数据处理层:处理具体的sql查找,sql解析,sql执行和sql执行结果映射;主要执行:通过传入参数动态的构建sql;执行结果并返回;
基础支撑层:负责数据库链接,事务缓存
mybatis中#为一个占位符,可以预编译sql;$为一个拼接符;
mybatis的加载流程
1)程序启动时,通过springfactorbuilder加载mybatis全局配置文件;spring中时mybatis-config,通过mybatis的配置文件生成对应的sqlsessionfactory;
2)sqlsessionfactory去生成sqlsession,通过sqlsession会话可以链接数据库;
3)通过sqlsession可以匹配到对应的xml;