关于mybatis的配置解析!

1.详解主配置文件解析:


2.运行主配置文件

Environments可以多个?环境

项目在测试阶段是mysql.但在以后是oracle

1)<transactionManager type="JDBC" />
该标签用于指定事务管理器。type的取值有两个:
JDBC:使用JDBC事务管理器
MANAGED:使用第三方事务管理器,例如使用Spring的事务管理器
2)<dataSource type="POOLED">
该标签用于指定数据源类型。type的取值有三个:
POOLED:使用连接池技术(默认使用的是Mybatis内置连接池)
UNPOOLED:不使用连接池技术
JNDI:Java Naming-Directory In

  3.映射文件的注册  

mapper URL=“environment.xml” (mapper文件的位置)

下面的这种方式可以映射文件放到本地文件系统,但是这种方式不常用。

比如:mapper 文件可以存放在E盘根目录

                “file:///e:mapper.xml”

      在此语句中“file"windows中是默认的地址协议,

                   而“///”是表示访问的是本机localhost

<mapper class="~~">

                    运用这个需要满足三个条件要求:

                    1)映射文件要与Dao接口文件在同一包下

                    2)映射文件名要Dao接口的简单类名相同

                    3)映射文件<mapper>标签的namespace属性值为Dao的权限定类名

  4.映射文件的详解

        1)这里的 paramterType属性可以省略

        2)SQL语句中的values中内容,要求必须是#{}其中name,age,score指的是参数对象的属性,底层是反射机制,从参数对象中获取其相应的get()方法。

 5.API详解:
0).线程安全问题出现的条件
1)只有单例对象才可能出现线程安全问题
2)多线程环境,即多个线程会共享这个单例对象
3)单例对象中具有可修改的成员变量
1). SqlSession接口
SqlSession接口的实现类是org.apache.ibatis.session.defaults.DefaultSqlSession。该对象是多例的。
2). SqlSessionFactory接口
SqlSessionFactory接口的实现类是org.apache.ibatis.session.defaults.DefaultSqlSessionFactory。
这个对象的作用就是为了创建SqlSession对象,而由于SqlSession对象是多例的,每创建一次SqlSession对象,都
需要一个SqlSessionFacotry对象去创建。
但SqlSessionFacotry对象是重量级组件,且DefaultSqlSessionFactory类中不存在可修改的成员变量。所以
SqlSessionFacotry对象可以定义为单例的。其生命周期与整个应用的相同。
3). SqlSessionFactoryBuilder类
该类对象的作用仅仅就是为了创建SqlSessionFactory对象。由于SqlSessionFacotry是单例对象,一旦创建完毕,

SqlSessionFactoryBuilder对象就可以定义为一个局部变量。SqlSessionFacotry创建完毕,就可以销毁了。

    6.源码分析


1) inputstream为什么不用我们手动关闭?

                因为在sqlsessionfactory的内部,有一个sqlsession。close(),所以不用我们手动的关闭。

        2)为什么opensession关闭了就等于自动提交了?因为opensession里有一个dirty值默认为FALSE;

        3)我们创建的Sqlsession实际就是初始化了一堆变量值,其中(automaticcomit)dirty值=false,指的是内存中数据就是数据库中的数据一致

不一致就是TRUE;

        4)insert到底执行的是什么 ?只要增删操作后,就会有一个dirty=true,提交后就是false,代表的是是否内存中的数据与数据库中的数据一致;

5)提交和回滚不管哪一个都会使dirty值变为false,因为都会导致内存中得数据和数据库中 的数据一致;

猜你喜欢

转载自blog.csdn.net/qq_40406929/article/details/80330283