MyBatis的核心配置——MyBatis的核心配置及核心对象MyBatis核心配置文件

MyBatis的核心配置文件包含<configuration>、<properties>、<settings>、<typeAliases>、<environments>和<mappers>等元素。<properties>用于读取外部属性文件,<settings>配置MyBatis的行为参数,<typeAliases>简化类引用,<environments>定义运行环境包括事务管理和数据源,<mappers>引入映射文件。
摘要由CSDN通过智能技术生成

MyBatis核心配置文件中的主要元素

一、  配置文件的主要元素

<configuration>的子元素的执行顺序

        <configuration>元素是整个XML配置文件的根元素,相当于MyBatis各元素的管理员。<configuration>有很多子元素,MyBatis的核心配置就是通过这些子元素完成的。需要注意的是,在核心配置文件中,<configuration>的子元素必须按照上图由上到下的顺序进行配置,否则MyBatis在解析XML配置文件的时候会报错。

二、 <properties>元素

         <properties>是一个配置属性的元素,该元素的作用是读取外部文件的配置信息。 

        假设现在有一个配置文件 db.properties,该文件配置了数据库的连接信息,具体如下:

jdbc.driver=com.mysql.cj.jdbc.Driver

jdbc.url=jdbc:mysql://localhost:3306/mybatis

jdbc.username=root

jdbc.password=root

        如果想获取数据库的连接信息,可以在 MyBatis 的核心配置文件 mybatis-config.xml 中使用<properties>元素先引入 db.properties 文件,具体代码如下:

<properties resource="db.properties" />

        引入 db.properties 文件后,如果希望动态获取 db.properties 文件中的数据库连接信息,可以使用<property>元素配置,示例代码如下:

<dataSource type="POOLED">

    <!-- 数据库驱动 -->

    <property name="driver" value="${jdbc.driver}" />

    <!-- 连接数据库的url -->

    <property name="url" value="${jdbc.url}" />

    <!-- 连接数据库的用户名 -->

    <property name="username" value="${jdbc.username}" />

    <!-- 连接数据库的密码 -->

    <property name="password" value="${jdbc.password}" />

</dataSource>

db.properties文件实现动态参数配置

    完成上述配置后,<dataSource>元素中连接数据库的 4 个属性(driver、url、username 和 password)值将会由db.properties 文件中对应的值来动态替换。这样一来,<properties>元素就可以通过 db.properties 文件实现动态参数配置。

三、<settings>元素中的常见配置参数

配置参数

描述

cacheEnabled

用于配置是否开启缓存。

lazyLoadingEnabled

延迟加载的全局开关。

aggressiveLazyLoading

关联对象属性的延迟加载开关。

multipleResultSetsEnabled

是否允许单一语句返回多结果集(需要兼容驱动)。

useColumnLabel

使用列标签代替列名。

useGeneratedKeys

允许JDBC支持自动生成主键,需要驱动兼容。

autoMappingBehavior

指定MyBatis应如何自动映射列到字段或属性。

defaultExecutorType

配置默认的执行器。

defaultStatementTimeout

配置超时时间,它决定驱动等待数据库响应的秒数。

mapUnderscoreToCamelCase

是否开启自动驼峰命名规则(camel case)映射。

jdbcTypeForNull

当没有为参数提供特定的JDBC类型时,为空值指定JDBC类型。

<settings>元素中常见配置参数的使用方式 

<settings>

    <!-- 是否开启缓存 -->

    <setting name="cacheEnabled" value="true" />

    <!-- 是否开启延迟加载,如果开启,所有关联对象都会延迟加载 -->

    <setting name="lazyLoadingEnabled" value="true" />

    <!-- 是否开启关联对象属性的延迟加载,如果开启,对任意延迟属性的调用都

    会使用带有延迟加载属性的对象向完整加载,否则每种属性都按需加载 -->

    <setting name="aggressiveLazyLoading" value="true" />

    ...

</settings>

四、 <typeAliases>元素

        核心配置文件若要引用一个POJO实体类,需要输入POJO实体类的全限定类名,而全限定类名比较冗长,如果直接输入,很容易拼写错误。例如,POJO实体类User的全限定类名是com.mac.pojo.User,未设置别名之前,映射文件的select语句块若要引用POJO类User,必须使用其全限定类名,引用代码如下:

<select id="findById" parameterType="int" resultType="com.mac.pojo.User">

       select * from users where uid = #{id}

</select>

方式一:多个全限定类设置别名的方式

          方式一:在<typeAliases>元素下,使用多个<typeAlias>元素为每一个全限定类逐个配置别名。

<typeAliases>

    <typeAlias alias=“Usertype="com.mac.pojo.User"/>

    <typeAlias alias="Student" type="com.mac.pojo.Student"/>

    <typeAlias alias="Employee" type="com.mac.pojo.Employee"/>

    <typeAlias alias="Animal" type="com.mac.pojo.Animal"/>

</typeAliases>

方式二:通过自动扫描包的形式自定义别名。

<typeAliases>

    <package name="com.mac.pojo"/>

</typeAliases>

常见Java类型的默认别名问题

        除了可以使用<typeAliases>元素为实体类自定义别名外,MyBatis框架还为许多常见的Java类型(如数值、字符串、日期和集合等)提供了相应的默认别名。例如别名_byte映射类型byte、_long映射类型long等,别名可以在MyBatis中直接使用,但由于别名不区分大小写,所以在使用时要注意重复定义的覆盖问题。

五、<environments>元素

<environments>元素配置运行环境

        MyBatis可以配置多套运行环境,如开发环境、测试环境、生产环境等,我们可以灵活选择不同的配置,从而将SQL映射到不同运行环境的数据库中。不同的运行环境可以通过<environments>元素来配置,但不管增加几套运行环境,都必须要明确选择出当前要用的唯一的一个运行环境。

<environments>各元素配置运行环境

        MyBatis的运行环境信息包括事务管理器和数据源。在MyBatis的核心配置文件中,MyBatis通过<environments>元素定义一个运行环境。<environment>元素有两个子元素,<transactionManager>元素和<daraSource>元素。<transactionManager>元素用于配置运行环境的事务管理器;<daraSource>元素用于配置运行环境的数据源信息。

使用<environments>元素进行配置的示例代码

<environments default="development">

    <environment id="development">

        <transactionManager type="JDBC" /><!—设置使用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>

</environments>

六、<transcationManager>元素配置事务管理器

        在MyBatis中,<transcationManager>元素可以配置两种类型的事务管理器,分别是JDBC和MANAGED。

  1. JDBC:此配置直接使用JDBC的提交和回滚设置,它依赖于从数据源得到的连接来管理事务的作用域。
  2. MANAGED:此配置不提交或回滚一个连接,而是让容器来管理事务的整个生命周期。默认情况下,它会关闭连接,但可以将<transcationManager>元素的closeConnection属性设置为false来阻止它默认的关闭行为。 

七、MyBatis数据源类型

        项目中使用Spring+MyBatis,则没必要在MyBatis中配置事务管理器,实际开发中,项目会使用Spring自带的管理器来实现事务管理。对于数据源的配置,MyBatis提供了UNPOOLED、POOLED和JNDI三种数据源类型。

八、UNPOOLED数据源

        UNPOOLED表示数据源为无连接池类型。配置此数据源类型后,程序在每次被请求时会打开和关闭数据库连接。UNPOOLED适用于对性能要求不高的简单应用程。UNPOOLED类型的数据源需要配置5种属性。 

UNPOOLED数据源需要配置的属性

属性

说明

drive

JDBC驱动的Java类的完全限定名

url

数据库的URL地址

username

登录数据库的用户名

password

登录数据库的密码

defaultTransactionIsolationLevel

默认的连接事务隔离级别

九、POOLED数据源 

        POOLED表示数据源为连接池类型。POOLED数据源利用“池”的概念将JDBC连接对象组织起来,节省了在创建新的连接对象时需要初始化和认证的时间。POOLED数据源使得并发Web应用可以快速的响应请求,是当前比较流行的数据源配置类型。 

POOLED数据源可额外配置的属性

属性

说明

poolMaximumActiveConnections

在任意时间可以存在的活动连接数量,默认值:10。

poolMaximumIdleConnections

任意时间可能存在的空闲连接数。

poolMaximumCheckoutTime

在被强制返回之前,池中连接被检出时间,默认值:20000 毫秒

poolTimeToWait

如果获取连接花费的时间较长,它会给连接池打印状态日志并重新尝试获取一个连接,默认值:20000毫秒。

poolPingQuery

发送到数据库的侦测查询,用来检验连接是否处在正常工作秩序中。默认是“NO PING QUERY SET”。

poolPingEnabled

是否启用侦测查询,默认值:false。

poolPingConnectionsNotUsedFor

配置poolPingQuery的使用频度。

十、JNDI数据源

        JNDI 表示数据源可以在 EJB 或应用服务器等容器中使用。JNDI数据源需要配置的属性如下所示。

属性

说明

initial_context

该属性主要用于在InitialContext中寻找上下文。该属性为可选属性,在忽略时,data_source属性会直接从InitialContext中寻找。

data_source

该属性表示引用数据源对象位置的上下文路径。如果提供了initial_context配置,那么程序会在其返回的上下文中进行查找;如果没有提供,则直接在InitialContext中查找。

十一、 <mappers>元素

<mappers>元素作用

        在MyBatis的核心配置文件中,<mappers>元素用于引入MyBatis映射文件。映射文件包含了POJO对象和数据表之间的映射信息,MyBatis通过核心配置文件中的<mappers>元素找到映射文件并解析其中的映射信息。通过<mappers>元素引入映射文件的方法有4种。

1、使用类路径引入

使用类路径引入映射文件的示例代码如下所示。

<mappers>

    <mapper resource="com/mac/mapper/UserMapper.xml"/>

</mappers>

2、使用本地文件路径引入 

使用本地文件路径引入映射文件的示例代码如下所示。

<mappers>

<mapper url="file:///Users/wf/IdeaProjects/mybatis/src/main/resources/mapperUserMapper.xml"/>

</mappers>

3、使用接口类引入

使用接口类引入映射文件的示例代码如下所示。

<mappers>

    <mapper class="com.mac.mapper.UserMapper"/>

</mappers>

4、使用包名引入

  使用包名引入映射文件的示例代码如下所示。

<mappers>

    <package name="com.mac.mapper"/>

</mappers>

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Code repairman

你的鼓励将是我创作的最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值