MyBatis学习总结(1)----SqlSessionFactory,SqlSession及配置文件

来源:互联网 发布:linux crontab 半分钟 编辑:程序博客网 时间:2024/06/05 00:16

MyBatis中两大重要的对象:SqlSessionFactory和SqlSession


1:SqlSessionFactory对象是整个数据库映射关系经过编译后的内存镜像,该对象的openSession()方法可以打开SqlSession对象,该       对象由SqlSessionFactoryBuilder加载MyBatis      的配置文件产生。

      如下代码:

      //读取mybatis-config.xml文件;
InputStream inputStream=Resources.getResourceAsStream("mybatis-config.xml");
//初始化mybatis,创建SqlSessionFactory类的实例;
SqlSessionFactory sessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session=sessionFactory.openSession();
上述代码的功能是根据配置文件mybatis-config.xml,创建SqlSessionFactory对象,然后产生SqlSession,执行SQL语句。而MyBati s的初始化就发生在第三句:

        SqlSessionFactory sessionFactory=new SqlSessionFactoryBuilder().build(inputStream);

        由此可见,SqlSessionFactory是根据MyBatis的配置文件 mybatis-config.xml创建的。

2:SqlSession是MyBatis的关键对象,类似于JDBC中的Connection。它是应用程序与持久存储层之间执行交互的一个单线程对象。

      SqlSession的实例不能呢过被共享也是线程不安全的。


MyBatis的配置文件结构


顶层configuration配置:代表着SqlSessionFactory。

properties属性:这些属性都是可外部配置并且可以动态替换的,既可以在典型的Java属性文件中配置,亦可通过properties元素的子元素来传递。

                          可以在CLSAAPATH中增加一个db.properties的Java属性文件。

                         driver=com.mysql.jdbc.Driver

                         url=jdbc:mysql://127.0.0.1:3306/mybatis

                         username=root

                         password=root

                         在配置文件中配置<properties.../>属性:

                         <properties rosource="db.properties"/>

                          其中的属性就可以在整个配置文件中使用来代替需要动态配置的属性值。

                         <dataSource type="POOLED">
                         <property name="driver" value=“${driver}”/>
                         <property name="url" value="${url}"/>
                         <property name="username" value="${username}"/>
                         <property name="password" value="${password}"/>
                         </dataSource>

                           这样就为配置提供了多种选择.

setting设置:这是MyBatis中极为重要的调整设置,它们会改变MyBatis的运行时行为.

typeAliases类型命名:为Java类型设置一个短的名字,它只和xml配置有关,存在的意义仅在于减少类完全限定名的冗余;

typeHandlers类型处理器:当MyBatis在预处理语句中设置一个参数或者从结果集中取出一个值时,都会用类型处理器将获取的值以合适的方式转换成Java类型。

objectFactory对象工厂:MyBatis每次创建结果对象的新实例时,都会使用一个对象工厂实例来完成。默认的对象工厂需要做的仅仅是实例化目标类,要么通过默认你构造方                                            法,要么在参数映射存在的时候通过参数构造方法来实现。也可以创建自己的对象工厂来实现。

environments配置环境:MyBatis的环境配置实际就是数据源的配置。MyBatis可以配置多种环境,这种机制使得MyBatis可以将SQL映射应用于多种数据库中。

                                        环境示例配置如下:

                                       <environments default="development">

                                        <environment id="development">

                                        <transactionManager type="JDBC">...</transactionManager>

                                         <dataSource type="POOLED">.....</dataSource>

                                        </envoronments>

                                        环境ID可以任意命名,建议简介有意义,而默认环境一定要匹配定义的其中一个环境ID。

                                       在MyBatis中有UNPOOLED,POOLED和JNDI三种数据源类型:

                                       1:UNPOOLED 只是每次被请求时打开和关闭连接,适合对性能没有要求的简单应用程序;

                                       2:POOLED 这种数据源的实现利用"池"的概念将JDBC连接对象组织起来,避免了创建新的连接实例时所必需的初始化和认证时间.

                                       3:JNID 这个数据源的实现是为了能在如EJB或应用服务器这类容器中使用.容器可以集中或者在外部配置数据源.

mapper映射器:告诉MyBatis去哪里找映射文件,进而找到这些SQL语句。













































阅读全文
0 0