zoukankan      html  css  js  c++  java
  • Mybatis-学习笔记(2)Mybatis配置文件

      3》typeAliases:类型别名。2种指定方式

         1>给某个类起个别名

    <typeAliases>
            <typeAlias type="com.lfy.bean.Emp" alias="Emp"/>
     </typeAliases>

         2>指定包名

    <!-- Mybatis将会搜索包名下需要的Java Bean,包下的Java Bean在没有注解的情况下,
    会使用Bean的首字母小写来限定类名作为它的别名,如com.lfy.bean.Emp的别名
    为emp;如果有注解别名,则以注解值为最终别名。 -->
    <
    typeAliases> <package name="com.lfy.bean.Emp"/> </typeAliases>
    @Alias("emp")
    public class Emp{
       ...
    }

        Mybatis还为许多常见的类型内建了别名:

        

         

      4》类型处理器

         

         如何使用:

      5》ObjectFactory对象工厂

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

    public class ExampleObjectFactory extends DefaultObjectFactory{
      //处理默认构造器
      public Object create(Class type){
        return super.create(type);
      }
      //处理带参构造器
      public Object create(Class type,List<Class> contructorArgTypes,List<Object> constructorArgs){
        return super.create(type,contructorArgTypes,constructorArgs);
      }
      //配置ObjectFactory
      public void setProperties(Properties properties){
        super.setProperties(properties);
      }
      
      public <T> boolean isCollection(Class<T> type){
        return Collection.class.isAssignableFrom(type);
      }
    }

      配置文件中配置自定义的对象工厂:

    <objectFactory type="com.lfy.factory.ExcempleObjectFactory">
        <property name="someProperty" value="100"/>
    </objectFactory>

      6》environments配置环境:事务管理配置、数据源配置。

        Mybatis的环境配置,实际是数据源的环境配置。可以将Mybatis配置到开发、测试、生产等多种环境的数据源,但SqlSessionFactory实例只能选择一个环境,即每个SqlSessionFactory对应一个数据库。如果想连接两个以上的数据库,只能创建多个SqlSessionFactory。

    <environments default="oracle">
            <environment id="oracle">
                <!-- 指定事务管理类型,type="JDBC"指直接使用JDBC的提交与回滚   -->
                <transactionManager type="JDBC" />
                <!-- 配置数据库连接信息 -->
                <dataSource type="POOLED">
                    <property name="driver" value="oracle.jdbc.OracleDriver" />
                    <property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:orcl" />
                    <property name="username" value="scott" />
                    <property name="password" value="12345" />
                </dataSource>
            </environment>
            <environment id="mysql">
                <transactionManager type="JDBC" />
                <!-- 配置数据库连接信息 -->
                <dataSource type="POOLED">
                    <property name="driver" value="com.mysql.jdbc.Driver" />
                    <property name="url" value="jdbc:mysql://127.0.0.1:3306/world" />
                    <property name="username" value="root" />
                    <property name="password" value="12345" />
                </dataSource>
            </environment>
        </environments>

       1)事务管理器有2种:

          1>JDBC:直接使用了JDBC的提交和回滚设置,依赖于从数据源得到的连接来管理事务范围。

          2>MANAGED:这个配置几乎没做什么。它从来不提交或回滚一个连接,而是让容器来管理事务的整个生命周期(如JAEE应用服务器的上下文)。默认情况下它会关闭连接,可以将closeConnection属性设置为false来阻止它默认的关闭行为。

    <transactionManager type="MANAGED" >
       <property name="closeConnection" value="false"/>
    </transactionManager>

       如果开发者使用Spring+Mybatis,则没有必要配置事务管理器,因为Spring模块会使用自带的管理器来覆盖前面的配置。

      2)数据源配置,有3中数据源类型:

          1>UNPOOLED:这种方式是每次被请求时打开和关闭连接。需要配置的5种连接属性:

                 

          2>POOLED:这种数据源的实现利用“池”的概念将JDBC连接对象组织起来,避免类创建新的连接实例时所必需的初始化和认证时间。这是一种使得并发Web应用快速响应请求的流行方式。还有更多的属性可以配置:

               

          3>JNDI:这个数据源的实现是为了能在如EJB或应用服务器这类容器中使用。容器可以集中或在外部配置数据源,然后放置一个JNDI上下文的引用。它有两个属性:

             

            举个例子:

    <dataSource type="JNDI">
         <property name="initial_context" value="java:/comp/env"/>
         <property name="data_source" value="some_dataSource">
    </dataSource>

      7》mapper映射器

         主要是告诉Mybatis去哪里找映射sql。

    <mappers>
            <!-- 注册empMapper.xml文件-->
            <mapper resource="com/lfy/mapping/empMapper.xml"/>
            <mapper class="com.lfy.mapping.EmpMapper"/>
    </mappers>
  • 相关阅读:
    [bzoj4868][Shoi2017]期末考试
    [4.30四校联考]
    [Noi2013]快餐店
    [Noi2013]树的计数
    [Noi2013]向量内积
    [Noi2013]矩阵游戏
    java端拦截器判断客户的的请求是否是ajax请求
    spring 事务回滚
    Page directive: illegal to have multiple occurrences of contentType with different values
    jsp service bean
  • 原文地址:https://www.cnblogs.com/ZeroMZ/p/11415267.html
Copyright © 2011-2022 走看看