美文网首页
SqlMapConfig.xml全局配置文件解析

SqlMapConfig.xml全局配置文件解析

作者: IT职业与自媒体思考 | 来源:发表于2020-06-22 21:24 被阅读0次

mybatis中的全局配置文件SqlMapConfig.xml在开发中的一些常用配置,首先看一下该全局配置文件中都有哪些可以配置的东西:

配置内容作用

<properties>用来加载属性文件

<settings>用来设置全局参数

<typeAliases>用来设置类型的别名

<typeHandlers>用来设置类型处理器

<objectFactory>用来设置对象工厂

<plugins>用来设置插件

<environments>用来设置mybatis的环境

<mappers>用来配置映射文件

<environments>是用来配置mybatis的环境的,在和Spring整合前是由mybatis自己管理的,但是和Spring整合后,这些配置都将被废弃掉,<environments>部分在前面已经有提到过,这里就不再赘述了。然后objectFactory和plugins一般我们不用,所以在这里就不总结了,<typeHandlers>类型处理器是mybatis中用来完成jdbc类型和java类型之间转换的,mybatis默认支持的类型处理器基本够我们使用了,一般不需要自定义。这篇博文主要来总结一下剩下的几个配置的用法。

1、properties属性

作用:将数据连接单独配置在db.properties中,只需要在SqlMapConfig.xml中加载db.properties的属性值,在SqlMapConfig.xml中就不需要对数据库连接参数进行硬编码。数据库连接参数只配置在db.properties中,方便对参数进行统一管理,其它xml可以引用该db.properties。

db.properties的内容:

jdbc.driver=com.mysql.jdbc.Driver

jdbc.url=jdbc:mysql://localhost:3306/mybatisjdbc.username=root

jdbc.password=root

在SqlMapConfig.xml中加载db.properties

<!-- 加载数据库文件db.properties -->

<properties resource="db.properties">

        <!-- properties中还可以配置一些属性名和属性值,此处的优先加载 -->

        <!-- <property name="driver" value=""/> -->

    </properties>

    <!-- 和spring整合后 environments配置将废除-->

    <environments default="development">

        <environment id="development">

        <!-- 使用jdbc事务管理,事务控制由mybatis管理-->

            <transactionManager type="JDBC" />

        <!-- 数据库连接池,由mybatis管理-->

            <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>

properties特性:

注意:

   (1)在properties元素体内定义的属性优先读取。

   (2)然后读取properties元素中resource或url加载的属性,它会覆盖已读取的同名属性。

   (3)最后读取parameterType传递的属性,它会覆盖已读取的同名属性。

建议:

 (1)不要在properties元素体内添加任何属性值,只将属性值定义在properties文件中。

   (2)在properties文件中定义属性名要有一定的特殊性,如xxxx.xxxx(jdbc.driver)。

2、settings全局参数设置

mybatis框架运行时可以调整一些运行参数。比如,开启二级缓存,开启延迟加载等等。全局参数会影响mybatis的运行行为。

            mybatis-settings的配置属性以及描述

官方setting的定义

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

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

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

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

    <setting name="useGeneratedKeys" value="false"/>

    <setting name="autoMappingBehavior" value="PARTIAL"/>

    <setting name="defaultExecutorType" value="SIMPLE"/>

    <setting name="defaultStatementTimeout" value="25"/>

    <setting name="safeRowBoundsEnabled" value="false"/>

    <setting name="mapUnderscoreToCamelCase" value="false"/>

    <setting name="localCacheScope" value="SESSION"/>

    <setting name="jdbcTypeForNull" value="OTHER"/>

    <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>

</settings>

3、typeAiases(别名)——重点掌握

这是配置中的一个重点,我们知道,在mapper.xml中,定义很多的statement,statement需要parameterType指定输入参数的类型、需要resultType指定输出结果的映射类型。如果在指定类型时输入类型全路径,有时候会很长,不方便进行开发,那么我们就可以针对parameterType或resultType指定的类型定义一些别名,在mapper.xml中通过别名<typeAliases>来定义,方便开发。

批量定义别名(常用)

<!-- 批量别名的定义:

        package:指定包名,mybatis会自动扫描包中的pojo类,自动定义别名,别名就是类名(首字母大写或小写都可以)

-->

<typeAliases>

      <package name="com.mybatis.entity"/>

      <package name="其它包"/>

</typeAliases>

这就爽了,如果进行了上面这样设置,那么所有放在com.mybatis.entity包下的pojo都可以不用定义了,直接使用类名就可以了,所以我们直接使用user即可。毫无疑问,开发中肯定使用这个批量的别名定义。

4、mappers(映射配置)

4.1、通过resource加载单个映射文件

<!-- 加载映射文件 -->

<mappers>

<!--通过resource方法一次加载一个映射文件 -->

<mapper resource="sqlmap/User.xml"/>

<mapper resource="mapper/UserMapper.xml"/></mappers>

4.2、通过mapper接口加载单个映射文件

<!-- 通过mapper接口加载单个映射配置文件

遵循一定的规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录中;

上边规范的前提是:使用的是mapper代理方法; --><mapper class="com.mybatis.mapper.UserMapper"/>

按照上边的规范,将mapper.java和mapper.xml放在一个目录,且同名。

4.3、批量加载mapper(推荐使用)

但是还是有个弊端,就跟上面那个别名的配置一样,如果现在有好多个mapper怎么办,所以mybatis也给我们提供了批量加载方法:我们只要指定mapper接口的包名,mybatis自动扫描包下面所有的mapper接口进行加载。当然,还是要遵循上面的那个规范。配置如下:

<!-- 批量加载映射配置文件,mybatis自动扫描包下面的mapper接口进行加载

    遵循一定的规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录中;

        上边规范的前提是:使用的是mapper代理方法;

  --><package name="com.mybatis.mapper"/>

这样com.mybatis.mapper包下的所有mapper.xml映射文件都可以加载了,这就更加简洁了。在开发中推荐使用这种批量加载映射文件的方法。

关于SqlMapConfig.xml文件中的配置就总结这么多吧~

相关文章

网友评论

      本文标题:SqlMapConfig.xml全局配置文件解析

      本文链接:https://www.haomeiwen.com/subject/lbwffktx.html