maybatis小结

1、Mybatis中的延迟加载
问题:在一对多中,当我们有一个用户,它有100个账户。
在查询用户的时候,要不要把关联的账户查出来?
在查询账户的时候,要不要把关联的用户查出来?

在查询用户时,用户下的账户信息应该是,什么时候使用,什么时候查询的。
在查询账户时,账户的所属用户信息应该是随着账户查询时一起查询出来。

什么是延迟加载
在真正使用数据时才发起查询,不用的时候不查询。按需加载(懒加载)
什么是立即加载
不管用不用,只要一调用方法,马上发起查询。

在对应的四种表关系中:一对多,多对一,一对一,多对多
一对多,多对多:通常情况下我们都是采用延迟加载。
多对一,一对一:通常情况下我们都是采用立即加载。

2、Mybatis中的缓存
什么是缓存
存在于内存中的临时数据。
为什么使用缓存
减少和数据库的交互次数,提高执行效率。
什么样的数据能使用缓存,什么样的数据不能使用
适用于缓存:
经常查询并且不经常改变的。
数据的正确与否对最终结果影响不大的。
不适用于缓存:
经常改变的数据
数据的正确与否对最终结果影响很大的。
例如:商品的库存,银行的汇率,股市的牌价。
Mybatis中的一级缓存和二级缓存
一级缓存:
它指的是Mybatis中SqlSession对象的缓存。
当我们执行查询之后,查询的结果会同时存入到SqlSession为我们提供一块区域中。
该区域的结构是一个Map。当我们再次查询同样的数据,mybatis会先去sqlsession中
查询是否有,有的话直接拿出来用。
当SqlSession对象消失时,mybatis的一级缓存也就消失了。

二级缓存:
它指的是Mybatis中SqlSessionFactory对象的缓存。由同一个SqlSessionFactory对象创建的SqlSession共享其缓存。
二级缓存的使用步骤:
第一步:让Mybatis框架支持二级缓存(在SqlMapConfig.xml中配置)
第二步:让当前的映射文件支持二级缓存(在IUserDao.xml中配置)
第三步:让当前的操作支持二级缓存(在select标签中配置)
3、Mybatis中的注解开发
环境搭建
单表CRUD操作(代理Dao方式)
多表查询操作
缓存的配置

mybatis简单理解

mybatis是一个框架,使我们在JAVA中对数据库的操作更加快捷,在使用过程中我们直接在主配置文件中修改其设置就能对数据库就行操作,这个XML配置文件会存在整个mybatis生命周期,以便重复读取。XML文件就是mybatis的全局配置文件sqlMapConfig.xml里面是myself的环境参数和映射对象参数,值得注意的是在其参数属性中resource属性每次只能加载一个文件,class属性只能由mapper代理对象执行而mapper接口名和mapper.XML文件名一致,并且要在同一个目录,package属性是批量加载 name为mapper文件所在的包名。

mybatis的工作流程

(1)加载配置并初始化

触发条件:加载配置文件

配置来源于两个地方,一处是配置文件,一处是Java代码的注解,将SQL的配置信息加载成为一个个MappedStatement对象(包括了传入参数映射配置、执行的SQL语句、结果映射配置),存储在内存中。(2)接收调用请求

触发条件:调用Mybatis提供的API传入参数:为SQL的ID和传入参数对象

处理过程:将请求传递给下层的请求处理层进行处理。

(3)处理操作请求 触发条件:API接口层传递请求过来

传入参数:为SQL的ID和传入参数对象

处理过程:

(A)根据SQL的ID查找对应的MappedStatement对象。

(B)根据传入参数对象解析MappedStatement对象,得到最终要执行的SQL和执行传入参数。

(C)获取数据库连接,根据得到的最终SQL语句和执行传入参数到数据库执行,并得到执行结果。

(D)根据MappedStatement对象中的结果映射配置对得到的执行结果进行转换处理,并得到最终的处理结果。

(E)释放连接资源。

(4)返回处理结果将最终的处理结果返回。

国庆节

国庆节是由一个国家制定的用来纪念国家本身的法定假日
它们通常是这个国家的独立、宪法的签署、元首诞辰或其他有重大纪念意义的周年纪念日;也有些是这个国家守护神的圣人节。
虽然绝大部分国家都有类似的纪念日,但是由于复杂的政治关系,部分国家的这一节日不能够称为国庆日,比如美国只有独立日,没有国庆日,但是两者意义相同。
而中国古代把皇帝即位、诞辰称为“国庆”。
如今,中国国庆节特指中华人民共和国正式成立的纪念日10月1日。
世界历史上最悠久的国庆节是圣马力诺的国庆节,远在公元301年,圣马力诺就把9月3日定为自己的国庆节。