二级缓存:             它指的是Mybatis中SqlSessionFactory对象的缓存.由同一个SqlSessionFactory对象创建的SqlSession共享其缓存.             二级缓存的使用步骤:                 第一步:让Mybatis框架支持二级缓存(在SqlMapConfig.xml中配置)                 第二步:让当前的映射文件支持二级缓存(在IUserDao.xml中配置)                 第三步…
Mybatis中的一级缓存和二级缓存         一级缓存:             它指的是Mybatis中SqlSession对象的缓存.             当我们执行查询之后,查询的结果会同时存入到SqlSession为我们提供一块区域中.             该区域的结构是一个Map.当我们再次查询同样的数据,mybatis会先去sqlsession中             查询是否有,有的话直接拿出来用.             当SqlSession对象消失时,myb…
2.Mybatis中的缓存     什么是缓存         存在于内存中的临时数据.     为什么使用缓存         减少和数据库的交互次数,提高执行效率.     什么样的数据能使用缓存,什么样的数据不能使用         适用于缓存:             经常查询并且不经常改变的.             数据的正确与否对最终结果影响不大的.         不适用于缓存:             经常改变的数据             数据的正确与否对最终结果影响很大的.…
如果数据库的数据和一级缓存的数据不一致了,怎么做到同步的呢? 增加一个更新 用户信息的方法 增加更新的节点配置 测试类增加测试方法.先查询id为41的 然后更新了41的数据.再次查询41的数据 先把更新代码剪切到测试. 由于有缓存的存在,所以只查了一遍 把更新的操作粘贴回来. 更新后的操作 又执行了新的select查询 也就是执行了update方法后,一级缓存被清空了..…
改成单表查询 首先配置的是select.他需要配置的值是accountDao中的方法,查询所有的账户,但是必须有条件.根据用户的id column配置的是id.因为要用user表的id去关联查询 AccountDao增加findAccountByUid方法 映射文件只需要封装到resultType里面即可  运行测试 调用测试方法 已经开始有延迟加载了. 注释掉循环的内容. 值查询了一个user表的sql…
不用骨架创建项目 复制一对多的代码src下的代码到我们刚才创建的项目里面 把依赖信息复制过来 这里原来实现的功能是立即加载的功能.sql语句是一次性查询的两个表关联的查询. 调整代码 删除AccountUser这个类 AccountTtest只保留findAll的方法 associaiton先剪切掉. 修改后 先运行这个单表操作 别名的问题 这是下面这个方法配置引起的.删掉下面红框内的代码即可. 再次来执行.正常执行成功 配置延迟加载 这里我们需要使用一个新的属性,叫做select 其实sele…
用户关联的account信息,假设一个用户管理的account有100个.那么我们在查询用户的时候那100个关联的信息也被查询出来. 用的时候才去查关联的数据 这两个不同的地方就是查询的时机不同 什么是延迟加载         在真正使用数据时才发起查询,不用的时候不查询.按需加载(懒加载)     什么是立即加载         不管用不用,只要一调用方法,马上发起查询. 在对应的四种表关系中:一对多,多对一,一对一,多对多         一对多,多对多:通常情况下我们都是采用延迟加载.(用…
创建新项目,一对多 复制刚才关闭的项目的文件 复制到们的新项目里面 复制包的依赖 删减相关代码.只保留这三个查询的方法 模糊查询改成传统的占位符的方式 之前是可以自定义实体类的属性字段,和数据库的字典不一致 增加测试方法 除了用户民 其他都是null值 @Results注解 这个注解包含了id和多个result 里面还有还有一个@Result注解 如果是主键把id设置为true,id默认为false 所有第一个id这里我们设置为true,表示id字段是主键 其他的字段可以不用因为id 默认为fa…
执行两次都查询userId为57的数据.测试一级缓存 返回true 新建测试类 ,测试二级缓存 二级缓存的配置 首先是全局配置,不配置其实也是可以的.默认就是开启的.这里为了演示配置上 dao类里面进行配置 运行测试方法 只查询了一次…