mybatis-config.xml 配置

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<!-- 注意:由Spring来创建SqlSessionFactory时候,该配置中的任意环境,数据源 和 MyBatis 的事务管理器都会被忽略。
          SqlSessionFactoryBean 会创建它自己的。 -->
<configuration>
    <!--1. properties
           如果属性在不只一个地方进行了配置,那么 MyBatis 将按照下面的顺序来加载:
                在 properties 元素体内指定的属性首先被读取。
                然后根据 properties 元素中的 resource 属性读取类路径下属性文件或根据 url 属性指定的路径读取属性文件,并覆盖已读取的同名属性。
                最后读取作为方法参数传递的属性,并覆盖已读取的同名属性。
     -->
    <!--<properties resource="db.properties">-->
            <!--<property name="username" value="dev_user"/>-->
    <!--</properties>-->
    <!--2. settings 这是 MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为。 -->
    <settings>
        <!-- 描述                                                   枚举值           默认值-->
        <!-- 1) 全局地开启或关闭配置文件中的所有映射器已经配置的任何缓存。   true | false	   true -->
        <setting name="cacheEnabled" value="true"/>
        <!-- 2) 延迟加载的全局开关。当开启时,所有关联对象都会延迟加载。
                特定关联关系中可通过设置fetchType属性来覆盖该项的开关状态。 true | false   false-->
        <setting name="lazyLoadingEnabled" value="true"/>
        <!-- 3)当开启时,任何方法的调用都会加载该对象的所有属性。
               否则,每个属性会按需加载(参考lazyLoadTriggerMethods).    true | false	false (true in ≤3.4.1)-->
        <setting name="aggressiveLazyLoading" value="true"/>
        <!-- 4)是否允许单一语句返回多结果集(需要兼容驱动)。               true | false	true-->
        <setting name="multipleResultSetsEnabled" value="true"/>
        <!-- 5)使用列标签代替列名。不同的驱动在这方面会有不同的表现,
               具体可参考相关驱动文档或通过测试这两种不同的模式来观察
               所用驱动的结果。                                        true | false	true-->
        <setting name="useColumnLabel" value="true"/>
        <!-- 6)允许 JDBC 支持自动生成主键,需要驱动兼容。 如果设置为
               true 则这个设置强制使用自动生成主键,尽管一些驱动不能
               兼容但仍可正常工作(比如 Derby)。                        true | false	False-->
        <setting name="useGeneratedKeys" value="false"/>
        <!-- 7)指定 MyBatis 应如何自动映射列到字段或属性。 NONE 表示
               取消自动映射;PARTIAL 只会自动映射没有定义嵌套结果集映
               射的结果集。 FULL 会自动映射任意复杂的结果集(无论是否嵌套)。 NONE, PARTIAL, FULL	    PARTIAL-->
        <setting name="autoMappingBehavior" value="PARTIAL"/>
        <!-- 8)指定发现自动映射目标未知列(或者未知属性类型)的行为。
               NONE: 不做任何反应
               WARNING: 输出提醒日志 ('org.apache.ibatis.session.
                        AutoMappingUnknownColumnBehavior' 的日志
                        等级必须设置为 WARN)
               FAILING: 映射失败 (抛出 SqlSessionException)            NONE, WARNING, FAILING  NONE-->
        <setting name="autoMappingUnknownColumnBehavior" value="WARNING"/>
        <!-- 9)	配置默认的执行器。
                SIMPLE 就是普通的执行器;
                REUSE 执行器会重用预处理语句(prepared statements);
                BATCH 执行器将重用语句并执行批量更新。                     SIMPLE REUSE BATCH      SIMPLE-->
        <setting name="defaultExecutorType" value="SIMPLE"/>
        <!-- 10)设置超时时间,它决定驱动等待数据库响应的秒数。                任意正整数	              Not Set (null)-->
        <setting name="defaultStatementTimeout" value="25"/>
        <!-- 11)为驱动的结果集获取数量(fetchSize)设置一个提示值。
                此参数只可以在查询设置中被覆盖                              任意正整数	              Not Set (null)-->
        <setting name="defaultFetchSize" value="100"/>
        <!-- 12)允许在嵌套语句中使用分页(RowBounds)。
                如果允许使用则设置为false。                                true | false        	  False-->
        <setting name="safeRowBoundsEnabled" value="false"/>
        <!-- 13)是否开启自动驼峰命名规则(camel case)映射,
                即从经典数据库列名 A_COLUMN 到经典 Java
                属性名 aColumn 的类似映射。                                true | false	      False-->
        <setting name="mapUnderscoreToCamelCase" value="false"/>
        <!-- 14)MyBatis 利用本地缓存机制(Local Cache)防止循环引用
                (circular references)和加速重复嵌套查询。
                默认值为 SESSION,这种情况下会缓存一个会话中执行的所有查询。
                若设置值为 STATEMENT,本地会话仅用在语句执行上,
                对相同 SqlSession 的不同调用将不会共享数据。                 SESSION | STATEMENT	 SESSION-->
        <setting name="localCacheScope" value="SESSION"/>
        <!-- 15)当没有为参数提供特定的 JDBC 类型时,为空值指定 JDBC 类型。
                某些驱动需要指定列的 JDBC 类型,多数情况直接用一般类型即可,
                比如 NULL、VARCHAR 或 OTHER。                            JdbcType 常量.
                                                                       大多都为: NULL,
                                                                       VARCHAR and OTHER	 OTHER-->
        <setting name="jdbcTypeForNull" value="OTHER"/>
        <!-- 16)指定哪个对象的方法触发一次延迟加载。                         用逗号分隔的方法列表。    equals,clone,hashCode,toString-->
        <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>
        <!-- 17)指定当结果集中值为 null 的时候是否调用映射对象的
                setter(map 对象时为 put)方法,这对于有 Map.keySet()
                依赖或 null 值初始化的时候是有用的。注意基本类型
                (int、boolean等)是不能设置成 null 的。                   true | false	         false-->
        <setting name="callSettersOnNulls" value="false"/>
        <!-- 18)当返回行的所有列都是空时,MyBatis默认返回null。
                当开启这个设置时,MyBatis会返回一个空实例。 请注意,
                它也适用于嵌套的结果集 (i.e. collectioin and association)。
                (从3.4.2开始)                                          true | false        	false-->
        <!--<setting name="returnInstanceForEmptyRow" value="false"/>-->
        <!-- 19)指定 MyBatis 增加到日志名称的前缀。	                        任何字符串	        Not set-->
        <setting name="logPrefix" value="mybatis"/>
        <!-- 20)指定 MyBatis 所用日志的具体实现,未指定时将自动查找。          	SLF4J | LOG4J
                                                                        | LOG4J2
                                                                        | JDK_LOGGING
                                                                        | COMMONS_LOGGING
                                                                        | STDOUT_LOGGING
                                                                        | NO_LOGGING        Not set-->
        <setting name="logImpl" value="SLF4J"/>
        <!-- 21)指定 Mybatis 创建具有延迟加载能力的对象所用到的代理工具。       CGLIB | JAVASSIST	JAVASSIST (MyBatis 3.3 or above)-->
        <setting name="proxyFactory" value="JAVASSIST"/>
        <!-- 22)....-->
        <!--<setting name="logImpl" value="LOG4J" />-->
        <!--<setting name="logImpl" value="STDOUT_LOGGING" />-->
        <setting name="logImpl" value="SLF4J" />
        <!-- 在所有的SQL映射路径上加上“dao”这个前缀 -->
        <setting name="logPrefix" value="dao."/>
    </settings>

    <!--3. typeAliases   类型别名是为 Java 类型设置一个短的名字。它只和 XML 配置有关,存在的意义仅在于用来减少类完全限定名的冗余。 -->
    <!--   也可以指定一个包名,MyBatis 会在包名下面搜索需要的 Java Bean
             比如:
             <typeAliases>
                  <package name="com.dabashow.bean"/>
             </typeAliases>
             每一个在包 com.dabashow.bean 中的 Java Bean,在没有注解的情况下,会使用 Bean 的首字母小写的非限定类名来作为它的别名。
              比如 domain.blog.Author 的别名为 author;若有注解,则别名为其注解值。看下面的例子:

                @Alias("test")
                public class Test {
                    ...
                }

             -->
    <typeAliases>
        <typeAlias alias="test" type="com.dabashow.bean.Test"/>
        <!--<typeAlias alias="Blog" type="domain.blog.Blog"/>-->
        <!--<typeAlias alias="Comment" type="domain.blog.Comment"/>-->
        <!--<typeAlias alias="Post" type="domain.blog.Post"/>-->
        <!--<typeAlias alias="Section" type="domain.blog.Section"/>-->
        <!--<typeAlias alias="Tag" type="domain.blog.Tag"/>-->
    </typeAliases>

    <!--4.typeHandlers  无论是 MyBatis 在预处理语句(PreparedStatement)中设置一个参数时,
                        还是从结果集中取出一个值时, 都会用类型处理器将获取的值以合适的方式转换成 Java 类型 -->
    <!-- 可以重写类型处理器,具体参考官网 http://www.mybatis.org/mybatis-3/zh/configuration.html-->
    <!--5. 处理枚举类型        6.对象工厂          7.插件 -->

    <!--8. 配置环境(environments)
           MyBatis 可以配置成适应多种环境,这种机制有助于将 SQL 映射应用于多种数据库之中,
           现实情况下有多种理由需要这么做。例如,开发、测试和生产环境需要有不同的配置;
           或者共享相同 Schema 的多个生产数据库, 想使用相同的 SQL 映射。许多类似的用例。
           不过要记住:尽管可以配置多个环境,每个 SqlSessionFactory 实例只能选择其一。
           所以,如果你想连接两个数据库,就需要创建两个 SqlSessionFactory 实例,每个数据库对应一个。
           而如果是三个数据库,就需要三个实例,依此类推,记起来很简单:每个数据库对应一个 SqlSessionFactory 实例
    -->
    <environments default="development"> <!-- 默认的环境 ID -->
        <environment id="development">
            <!-- 8.1 事务管理器(transactionManager)
                     在 MyBatis 中有两种类型的事务管理器(也就是 type=”[JDBC|MANAGED]”)

                     1)JDBC – 这个配置就是直接使用了 JDBC 的提交和回滚设置,它依赖于从数据源得到的连接来管理事务作用域。
                     2)MANAGED – 这个配置几乎没做什么。它从来不提交或回滚一个连接,而是让容器来管理事务的整个生命周期
                      (比如 JEE 应用服务器的上下文)。 默认情况下它会关闭连接,然而一些容器并不希望这样,
                       因此需要将 closeConnection 属性设置为 false 来阻止它默认的关闭行为


                     注意:如果你正在使用 Spring + MyBatis,则没有必要配置事务管理器,
                          因为 Spring 模块会使用自带的管理器来覆盖前面的配置。-->
            <transactionManager type="JDBC">
                <property name="..." value="..."/>
            </transactionManager>
            <!-- 8.2 数据源(dataSource)
                     dataSource 元素使用标准的 JDBC 数据源接口来配置 JDBC 连接对象的资源。
                     有三种内建的数据源类型(也就是 type=”[UNPOOLED|POOLED|JNDI]”):
                     1)UNPOOLED– 这个数据源的实现只是每次被请求时打开和关闭连接。虽然有点慢,
                       但对于在数据库连接可用性方面没有太高要求的简单应用程序来说,是一个很好的选择。
                       不同的数据库在性能方面的表现也是不一样的,对于某些数据库来说,使用连接池并不重要,
                       这个配置就很适合这种情形。
                     2)POOLED– 这种数据源的实现利用“池”的概念将 JDBC 连接对象组织起来,避免了创建新的
                       连接实例时所必需的初始化和认证时间。 这是一种使得并发 Web 应用快速响应请求的流行处理方式。

                       以上两者的具体属性有 驱动,用户名,密码,url。 连接池的属性有:连接数等,具体参数名参考官网。
                     3)JNDI – 这个数据源的实现是为了能在如 EJB 或应用服务器这类容器中使用,容器可以集中或在外部
                       配置数据源,然后放置一个 JNDI 上下文的引用。比如在IBM WAS中,我就曾经用过。
            -->
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
        <!-- 可以配置多个数据源-->
        <!--<environment id="test">-->
            <!--<transactionManager type="JDBC">-->
                <!--<property name="..." value="..."/>-->
            <!--</transactionManager>-->
            <!--<dataSource type="POOLED">-->
                <!--<property name="driver" value="${driver1}"/>-->
                <!--<property name="url" value="${url1}"/>-->
                <!--<property name="username" value="${username1}"/>-->
                <!--<property name="password" value="${password1}"/>-->
            <!--</dataSource>-->
        <!--</environment>-->
    </environments>
    <!-- 该配置可以由Spring的 SqlSessionFactoryBean的mapperLocations 属性来设置。与此处配置mappers等效。 -->
    <mappers>
        <package name="com.dabashow.dao.mapper"/>
    </mappers>
</configuration>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值