自定义持久层框架笔记

使用端

提供两部分配置信息。数据库配置信息 sql 配置信息 sql语句 参数类型 返回值类型
使用配置文件提供这两部分信息
(1)、sqlMapConfig.xml:存放数据库的配置信息。可以存放mapper.xml的全路径
(2)、mapper.xml:存放sql配置信息
(3)、	

自定义持久层框架: 本质就是对jdbc代码的封装

(1)、加载配置文件[根据配置文件路径加载配置文件成字节输入流 存储在内存中]  创建 Resources类 方法 inputStream getResourcesStream(String path)类
	提问: 是否需要执行两次这个方法
(2)、创建两个javabean (容器对象):存放的就是对配置文件解析出来的内容

	Configuration 存放sqlmapconfig.xml解析的内容。MappedStatement 映射配置类 存mappper.xml
(3)、解析配置文件: dom4j
	创建一个类 sqlSessionFactoruyBuild 方法 build(inputStream in)
		1、使用dom4j 解析配置文件 将内容封装在容器对象中
		2、创建sqlSessionFactory对象: 生产sqlSession 生产会话对象。// 工厂模式-》 降低程序里面的耦合 同时根据不同需求生产不同状态的对象
(4)、基于开闭原则建sqlSessionFactory接口和实现类defaultSqlSessionFactory
	第一:opSession(); 生产sqlsession的
(5)、创建Sqlsession接口 和实现类 defaultSqlSession
		定义对数据库的crud 操作 selectList()。selectOne() update(); delete();

(6)创建executor 及实现类SimpleExecutor 实现类
	query(Configuration,xml解析的内容。MappedStatement,Object...param);执行的就是jdbc代码


	mybatis。orm 半自动  对象关系映射

	对象.class.classloader 可以调用类加载器 可以通过类加载器  调用getResourceAsStream将数据转为字节流



	mybatis 缓存 就是内存的一部分。常常来自数据库查询结果的保存 使用缓存我们可以避免频繁与数据库交互进而提高相应速度

	mybatis 有一级缓存 和二级缓存。一级缓存 是sqlsession 级别 内部有个hashmap 所以不同sqlsession缓存也是不影响的

	 二级缓存是mapper(namespace) 二级缓存跨sqlsession。 多个sqlsession 操作的是同一个sql配置文件的sql 他们是共享缓存的

	 一级缓存默认是开启的  证明一级缓存是存在的 就对一条sql语句执行两次 然后发现实际值发送了一条sql语句 

	 当发生事务操作后 一级缓存区域将会被刷新 sqlsession.clearCache() 也可以手动刷新缓存
	 一级缓存底层数据结构就是个hashmap
	 一级缓存什么时候被创建
	 以及缓存工作流程是什么
	 executor.creatCacheKey 创建一级缓存的key

	 如果同一个mapper内有多个sqlsession 其中 有一个sqlsession有事务操作就会清空二级缓存

	 cacheEnabled 可以开启二级缓存 @CacheNamespace 可以开启二级缓存
	 一级缓存缓存的是对象。二级缓存缓存的是数据 
	 
	 @usercatch 注解开启二级缓存
	 flushcache 有事务发生刷新缓存 默认是true

	 实现缓存 和自定义缓存。需要实现 cache 接口

	 分布式项目 mybatis 不可以实现二级缓存的



	 PAYPALISHIRING

	 PAHNAPLSIIGYIR
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值