发表于: 2017-12-14 23:02:34

1 840


今天完成的事情:(一定要写非常细致的内容,比如说学会了盒子模型,了解了Margin)

1.作用域(Scope)和生命周期
依赖注入框架可以创建线程安全、基于事务的SqlSession和映射器(mapper),并将他们直接注入到你的bean中,因此可以直接忽略它们的生命周期。
1)SqlSessionFactoryBuilder
这个类可以被实例化、使用和丢弃,一旦创建了SqlSessionFactory,就不再需要它了。因此SqlSessionFactoryBuilder实例的最佳作用域是方法作用域(也就是局部方法变量)。
可以重用SqlSessionFactoryBuilder来创建多个SqlSessionFactory实例,不过最好还是让其一只存在以保证所有的XML解析资源开放给更重要的事情。
2)SqlSessionFactory
SqlSessionFactory一旦被创建就应该在应用的运行期间一直存在,没有任何理由对它进行清除和重建。使用SqlSessionFactory的最佳实践是应用运行期间不要重复创建多次,多次重建SqlSessionFactory被视为一种代码的bad smell.
因此SqlSessionFactory的最佳作用域是应用作用域。有很多方法可以做到,最简单的就是使用单例模式或者静态单例模式。
3)SqlSession
每个线程都应该有它自己的SqlSession实例。SqlSession的实例不是线程安全的,因此是不能被共享的,所以它的最佳的作用域是请求或方法作用域。
绝对不能将SqlSession实例的引用放到一个类的静态域,甚至一个类的实例变量也不行。???
也绝不能将SqlSession实例的引用放到任何类型的管理作用域中。???
4)映射器实例(Mapper Instances)
映射器是创建用来绑定映射语句的接口。映射器接口的实例是从SqlSession中获得的。
因此,映射器实例的最大作用域是和SqlSession相同的,因为它们都是从SqlSession里被请求的。但最佳作用域是方法作用域。
2.XML映射配置文件
http://www.mybatis.org/mybatis-3/zh/configuration.html#properties
Mybatis的配置文件包含了会深深影响Mybatis行为的设置(setting)和属性(properties)信息。
1)properties属性
如果属性在不只一个地方进行了配置,那么mybatis将按照下面的属性来加载:

  • 在properties元素体内指定的属性首先被读取
  • 然后根据properties元素中的resource属性读取类路径下属性文件和根据url属性指定的路径读取属性文件,并覆盖已读取的同名属性
  • 最后读取作为方法参数传递的属性,并覆盖已读取的同名属性
因此,通过方法参数传递的属性具有最高优先级,resource/url属性中指定的配置文件次之,最低优先级的是properties属性中指定的属性。
2)settings设置

3)typeAliases类型别名
类型别名是为java类型设置一个短的名字。存在的意义仅在于用来减少类完全限定名的冗余。
4)typeHandlers类型处理器
无论是Mybatis在预处理语句(PreparedStatement)中设置一个参数时,还是从结果集中取出一个值时,都会用类型处理器将获取的值以合适的方式转化成Java类型。

你可以重写类型处理器或创建你自己的类型处理器来处理不支持的或非标准的类型。 具体做法为:实现 org.apache.ibatis.type.TypeHandler 接口, 或继承一个很便利的类 org.apache.ibatis.type.BaseTypeHandler, 然后可以选择性地将它映射到一个 JDBC 类型。
5)objectFactory对象工厂
MyBatis 每次创建结果对象的新实例时,它都会使用一个对象工厂(ObjectFactory)实例来完成。 默认的对象工厂需要做的仅仅是实例化目标类,要么通过默认构造方法,要么在参数映射存在的时候通过参数构造方法来实例化。 如果想覆盖对象工厂的默认行为,则可以通过创建自己的对象工厂来实现。


明天计划的事情:(一定要写非常细致的内容)

项目人员定不下来 ,继续看知识点


遇到的问题:(遇到什么困难,怎么解决的) 

有很多知识,然后目前不是很明白。

项目还没定下来,都不太愿意做麻烦的。。。。。。


收获:(通过今天的学习,学到了什么知识)

看完了wiki里面的svn,不过没操作的话还是会忘掉的

 


返回列表 返回列表
评论

    分享到