1,mybatis相关概念
1)mybatis持久层ORM框架,是对JDBC的封装。
image.png
2)对比
dbutils、springdao:对jdbc轻量级的封装。
hibernate:处理复杂业务灵活性差,复杂HQL难写且难理解。
mybatis:折中了dbutils、hibernate
2,mybatis配置
1)数据源配置
image.png
2)SqlSessionFactoryBean配置
加载mapper.xml sql映射文件(接口与sql实现映射
):resolver.getResources("classpath*:com/hzq/*/dao/mapper/*.xml");
加载mybatis总的配置文件:resolver.getResource("classpath:mybatis/mybatis-config.xml")
image.png
3)通过SqlSessionFactory获取session
image.png
4)mybatis工作流程
image.png
2,mybatis特性
1)动态sql
无需代码操作,动态拼接sql
包含动态查询、动态插入、动态更新、动态删除。
image.png
2)mybatis使用TheadLocal来对线程的SqlSession进行管理,保证线程的安全性。
3)每个mybatis应用,都是以SqlSessionFactory的实例为中心的, 创建SqlSession类似jdbc的connection
。
4)动态代理
BranchDao branchDao = sqlSession.getMapper(BranchDao.class);
mybatis基于jdk的动态代理,使用MapperProxyFactory为dao接口生成proxy对象。MapperProxy是一个InvocationHandler。
image.png
通过MapperMethod对象执行sql。
image.png
网友评论