MyBatis全局配置文件

MyBatis全局配置文件

  • configuration(配置)
  • properties(属性)
  • settings(设置)
  • typeAliases(类型别名)
  • typeHandlers(类型处理器)
  • objectFactory(对象工厂)
  • plugins(插件)
  • environments(环境配置)
    • environment(环境遍历)
      • transactionManager(事务管理器)
      • dataSource(数据源)
  • databaseldProvider(数据库厂商表示)
  • mappers(映射器)

configuration

configuration是整个全局配置文件的根标签,也对应着MyBatis源码中最重要的配置类Configuration。

properties

properties用来引入一个配置文件信息,比如最常见的数据库连接信息。
<?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">
<configuration>
    <properties resource="db.properties"></properties>
</configuration>

settings

这是 MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为。
详情可参考官网
https://mybatis.net.cn/configuration.html#settings

<settings>
     <!-- 打印查询语句 -->
     <setting name="logImpl" value="STDOUT_LOGGING" />

     <!-- 控制全局缓存(二级缓存),默认 true-->
     <setting name="cacheEnabled" value="true"/>

     <!-- 延迟加载的全局开关。当开启时,所有关联对象都会延迟加载。默认 false  -->
     <setting name="lazyLoadingEnabled" value="true"/>
     <!-- 当开启时,任何方法的调用都会加载该对象的所有属性。默认 false,可通过select标签的 fetchType来覆盖-->
     <setting name="aggressiveLazyLoading" value="false"/>
     <!--  Mybatis 创建具有延迟加载能力的对象所用到的代理工具,默认JAVASSIST -->
     <!--<setting name="proxyFactory" value="CGLIB" />-->
     <!-- STATEMENT级别的缓存,使一级缓存,只针对当前执行的这一statement有效 -->
     <!--
             <setting name="localCacheScope" value="STATEMENT"/>
     -->
     <setting name="localCacheScope" value="SESSION"/>
 </settings>

typeAliases

类型别名可为 Java 类型设置一个缩写名字。 它仅用于 XML 配置,意在降低冗余的全限定类名书写。

<typeAliases>
     <!--<typeAlias alias="user" type="com.gupaoedu.vip.domain.User" />-->
     <package name="com.gupaoedu.vip.domain"/>
 </typeAliases>

typeHandlers

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

    <typeHandlers>
        <typeHandler handler="com.gupaoedu.vip.type.MyTypeHandler" jdbcType="VARCHAR" javaType="String"></typeHandler>
        <!--<typeHandler handler="com.gupaoedu.vip.type.MyTypeHandler" ></typeHandler>-->
    </typeHandlers>

objectFactory

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

    <objectFactory type="com.gupaoedu.vip.objectfactory.GpObjectFactory">
        <property name="gupao" value="666"/>
    </objectFactory>

plugins

MyBatis 允许你在映射语句执行过程中的某一点进行拦截调用。

<plugins>

       <!--<plugin interceptor="com.gupaoedu.interceptor.FirstInterceptor">
           <property name="testProp" value="1000"/>
       </plugin>-->
       <!-- com.github.pagehelper为PageHelper类所在包名 -->
       <plugin interceptor="com.github.pagehelper.PageHelper">
           <property name="dialect" value="mysql" />
           <!-- 该参数默认为false -->
           <!-- 设置为true时,会将RowBounds第一个参数offset当成pageNum页码使用 -->
           <!-- 和startPage中的pageNum效果一样 -->
           <property name="offsetAsPageNum" value="true" />
           <!-- 该参数默认为false -->
           <!-- 设置为true时,使用RowBounds分页会进行count查询 -->
           <property name="rowBoundsWithCount" value="true" />
           <!-- 设置为true时,如果pageSize=0或者RowBounds.limit = 0就会查询出全部的结果 -->
           <!-- (相当于没有执行分页查询,但是返回结果仍然是Page类型) -->
           <property name="pageSizeZero" value="true" />
           <!-- 3.3.0版本可用 - 分页参数合理化,默认false禁用 -->
           <!-- 启用合理化时,如果pageNum<1会查询第一页,如果pageNum>pages会查询最后一页 -->
           <!-- 禁用合理化时,如果pageNum<1或pageNum>pages会返回空数据 -->
           <property name="reasonable" value="false" />
           <!-- 3.5.0版本可用 - 为了支持startPage(Object params)方法 -->
           <!-- 增加了一个`params`参数来配置参数映射,用于从Map或ServletRequest中取值 -->
           <!-- 可以配置pageNum,pageSize,count,pageSizeZero,reasonable,不配置映射的用默认值 -->
           <!-- 不理解该含义的前提下,不要随便复制该配置 -->
           <property name="params" value="pageNum=start;pageSize=limit;" />
           <!-- always总是返回PageInfo类型,check检查返回类型是否为PageInfo,none返回Page -->
           <property name="returnPageInfo" value="check" />
       </plugin>
    </plugins>

environments

MyBatis 可以配置成适应多种环境,这种机制有助于将 SQL 映射应用于多种数据库之中, 现实情况下有多种理由需要这么做。例如,开发、测试和生产环境需要有不同的配置;或者想在具有相同 Schema 的多个生产数据库中使用相同的 SQL 映射。还有许多类似的使用场景。

    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/><!-- 单独使用时配置成MANAGED没有事务 -->
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>

transactionManager

如果配置的是JDBC,则会使用Connection对象的commit()、rollback()、close()管理事务。
如果配置成MANAGED,会把事务交给容器来管理,比如JBOSS、Weblogic。因为我们跑的是本地程序,如果配置成MANAGE不会有任务事务管理。
如果是Spring+MyBatis,则没有必要配置,因为我们会直接在applicationContext.xml里面配置数据源和事务,覆盖MyBatis的配置。

dataSource

数据源

mappers

配置Mapper.xml的路径,在MyBatis启动时去扫描这些映射。
    <mappers>
        <mapper resource="mapper/UserMapper.xml"/>
    </mappers>
  • 16
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值