Mybatis 全局配置文件 (标签详解)

Mybatis 全局配置文件中的标签详解:

顺序约束:自上而下

注意:标签也是有顺序的 顺序错误会报错。

在这里插入图片描述

(一):全局配置文件头部

<?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 标签

表示对整个MyBatis框架进行配置

< configuration > < /configuration >

(三):properties标签

属性resource 和 url

用来引用外部properties配置文件内容

属性:resource 引用类路径下的资源 ;url:引入网络路径或者磁盘路径下的资源

在这里插入图片描述

(四):Settings

settings标签可以进行一些公共的设置,比较重要的属性说明:

cacheEnabled: 默认是true。 用于开启或关闭全部mapper的缓存行为。

lazyLoadingEnabled:默认是false。用于开启或关闭懒加载(延迟加载)

useColumnLabel: 默认是true。

defaultStatementTimeout:默认未设置(支持正整数)。数据库超时设置。

mapUnderscoreToCamelCase:默认是false。 A_COLUMN -> aColumn

  • 开启 mapUnderscoreToCamelCase 可实现数据库的字段值 与实体类 值匹配 避免空值
    <settings>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>
  • 如何设置输出SQL语句:
    <settings>
        <setting name="logImpl" value="LOG4J"/>
    </settings>

关于日志,都有级别:

(低) TRACE -> DEBUG -> INFO -> ERROR -> FATAIL (高)

maven环境下导依赖:
在这里插入图片描述
在类路径下创建名为 log4j.properties 的配置文件:

# Global logging configuration
log4j.rootLogger=TRACE, stdout
# 细化到某个包下,某个类中的日志级别
log4j.logger.com.example.dao.UserMapper=TRACE
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

结果显示:
在这里插入图片描述

(五):typeAliases

内置别名:
在这里插入图片描述

所谓的别名,就是简化我们的配置的书写。有了别名以后,不需要再写 包名+ 类名 ,直接写别名。java.lang.Integer - int/integer

<select id="count" resultType="integer">
    select count(1) from t_user
</select>

我们自己的类,要想简化配置,就需要使用 typeAliases 进行别名的注册。

   <typeAliases>
        <typeAlias type="com.example.domain.User" alias="user"/>
    </typeAliases>

之前的做法
在这里插入图片描述

进行注册:
在这里插入图片描述
注册成功后就可以使用别名替代
在这里插入图片描述

(六):typeHandlers

使用自定义的类型处理器:可以修改枚举类保存获取数据库的值

<typeHandlers>
    <typeHandler handler="typehandler.DiyTypeHandler" javaType="entity.Status"/>
</typeHandlers>

(七)plugins 【插件配置】

可以拦截四大对象 Executor之类的 动态代理可以实现额外操作

举例:分页插件:

<plugins>
       <plugin interceptor="com.github.pagehelper.PageInterceptor">
          <!-- 使用下面的方式配置参数,后面会有所有的参数介绍 -->
          <property name="param1" value="value1"/>
      </plugin>
</plugins>

(八)environments 环境变量标签

1.在environments 里可指定多个环境即定义多个environment 标签

2.属性default可以指定某种环境 如test测试和development开发快速切换 default 不指定默认是第一个环境。

3.enviroment 配置一个具体的环信息 id代表当前标签唯一标识

4.transactionManager 的type 用于说明事务管理的类型:JDBC | MANAGED

5.dataSource:的type 说明 数据源 UNPOOLED | POOLED | JNDI

<!--environment可以指定多个环境即定义多个environment 标签  default 不指定默认**是第一个环境-->
    <environments default="aa">
        <environment id="aa">
            <!-- type 用于说明事务管理的类型:JDBC|MANAGED -->
            <transactionManager type="JDBC"></transactionManager>
            <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>

(九):databaseIdProvider

用于多数据库支持。 我们知道不同的数据库,完成相同操作时,SQL语句有可能是不同的。

比如说分页:

  • mysql 中使用 limit m , n
  • oracle 中使用 ROWNUM

可以配置两个进行解决:

<environments default="dev_mysql">
    <environment id="dev_mysql">
        <transactionManager type="JDBC"/>
        <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>

    <environment id="dev_oracle">
        <transactionManager type="JDBC"/>
        <dataSource type="POOLED">
            <property name="driver" value="${orcl.driver}" />
            <property name="url" value="${orcl.url}" />
            <property name="username" value="${orcl.username}" />
            <property name="password" value="${orcl.password}" />
        </dataSource>
    </environment>
</environments>

    <databaseIdProvider type="DB_VENDOR">
        <property name="MySQL" value="mysql"/>
        <property name="Oracle" value="oracle" />
    </databaseIdProvider>
    

在这里插入图片描述

(十):mappers

作用:将Mapper.xml文件中的sql映射绑定到全局配置中

    <!-- 管理 映射配置文件 UserMapper.xml -->
    <mappers>
        <mapper resource="UserMapper.xml"></mapper>
    </mappers>
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值