当前位置: 移动技术网 > IT编程>开发语言>Java > mybatis之旅第三篇-SqlMapConfig.xml全局配置文件解析

mybatis之旅第三篇-SqlMapConfig.xml全局配置文件解析

2019年03月22日  | 移动技术网IT编程  | 我要评论

一、前言

刚换工作,为了更快的学习框架和了解业务,基本每天都会加班,导致隔了几天没有进行总结,心里总觉得不安,工作年限越长越感到学习的重要性,坚持下去!!!

经过前两篇的总结,已经基本掌握了mybatis的开发模式,这篇主要是总结sqlmapconfig.xml文件的配置

sqlmapconfig.xml中配置的内容和顺序如下:

配置内容作用
properties 用来加载属性文件
settings 用来设置全局参数
typealiases 用来设置类型的别名
typehandlers 用来设置类型处理器
objectfactory 用来设置对象工厂
plugins 用来设置插件
environments 用来设置mybatis的环境
mappers 用来配置映射文件

注:配置文件必须按照此顺序进行配置

下面依次来介绍各个配置

二、properties(属性)

sqlmapconfig.xml可以引用java属性文件中的配置信息,如数据库配置,在config下新建db.properties 如图:

内容如下:

jdbc.driver=com.mysql.jdbc.driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis?characterencoding=utf-8
jdbc.username=root
jdbc.password=123456

sqlmapconfig,xml 中修改:

<properties resource="config/db.properties">
        <!-- properties中还可以配置一些属性名和属性值,此处的优先加载
        <property name="" value=""/>
        <property name="jdbc.username" value=""/>
        <property name="jdbc.password" value=""/>
    -->
    </properties>

    <!-- 和spring整合后 environments配置将废除 -->
    <environments default="development">
        <environment id="development">
            <!-- 使用jdbc事务管理 -->
            <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>
    </environments>

注意: mybatis 将按照下面的顺序来加载属性:在 properties 元素体内定义的属性首先被读取。 然后会读取properties 元素中resource或 url 加载的属性,它会覆盖已读取的同名属性

三、settings全局参数设置

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

setting(设置)description(描述)valid values(验证值组)default(默认值)
cacheenabled 在全局范围内启用或禁用缓存配置 任何映射器在此配置下。 true | false true
lazyloadingenabled 在全局范围内启用或禁用延迟加载。禁用时,所有相关联的将热加载。 true | false true
aggressivelazyloading 启用时,有延迟加载属性的对象将被完全加载后调用懒惰的任何属性。否则,每一个属性是按需加载。 true | false true
multipleresultsetsenabled 允许或不允许从一个单独的语句(需要兼容的驱动程序)要返回多个结果集。 true | false true
usecolumnlabel 使用列标签,而不是列名。在这方面,不同的驱动有不同的行为。参考驱动文档或测试两种方法来决定你的驱动程序的行为如何。 true | false true
usegeneratedkeys 允许jdbc支持生成的密钥。兼容的驱动程序是必需的。此设置强制生成的键被使用,如果设置为true,一些驱动会不兼容性,但仍然可以工作。 true | false false
automappingbehavior 指定mybatis的应如何自动映射列到字段/属性。none自动映射。 partial只会自动映射结果没有嵌套结果映射定义里面。 full会自动映射的结果映射任何复杂的(包含嵌套或其他)。 none,partial,full partial
defaultexecutortype 配置默认执行人。simple执行人确实没有什么特别的。 reuse执行器重用准备好的语句。 batch执行器重用语句和批处理更新。 simple,reuse,batch simple
saferowboundsenabled 允许使用嵌套的语句rowbounds。 true | false false
mapunderscoretocamelcase 从经典的数据库列名a_column启用自动映射到骆驼标识的经典的java属性名acolumn。 true | false false
localcachescope mybatis的使用本地缓存,以防止循环引用,并加快反复嵌套查询。默认情况下(session)会话期间执行的所有查询缓存。如果localcachescope=statment本地会话将被用于语句的执行,只是没有将数据共享之间的两个不同的调用相同的sqlsession。 sessionstatement session
dbctypefornull 指定为空值时,没有特定的jdbc类型的参数的jdbc类型。有些驱动需要指定列的jdbc类型,但其他像null,varchar或other的工作与通用值。 jdbctype enumeration. most common are: null, varchar and other other
lazyloadtriggermethods 指定触发延迟加载的对象的方法。 a method name list separated by commas equals,clone,hashcode,tostring
defaultscriptinglanguage 指定所使用的语言默认为动态sql生成。 a type alias or fully qualified class name. org.apache.ibatis.scripting.xmltags.xmldynamiclanguagedriver
callsettersonnulls 指定如果setter方法或地图的put方法时,将调用检索到的值是null。它是有用的,当你依靠map.keyset()或null初始化。注意原语(如整型,布尔等)不会被设置为null。 true | false false
logprefix 指定的前缀字串,mybatis将会增加记录器的名称。 any string not set
logimpl 指定mybatis的日志实现使用。如果此设置是不存在的记录的实施将自动查找。 slf4j | log4j | log4j2 | jdk_logging | commons_logging | stdout_logging | no_logging not set
proxyfactory 指定代理工具,mybatis将会使用创建懒加载能力的对象。 cglib | javassist cglib

 默认的配置如下:

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

四、typealiases(类型别名)

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

下面是默认的别名:

别名映射的类型
_byte byte
_long long
_short short
_int int
_integer int
_double double
_float float
_boolean boolean
string string
byte byte
long long
short short
int integer
integer integer
double double
float float
boolean boolean
date date
decimal bigdecimal
bigdecimal bigdecimal

除了这些默认别名,我们还可以自己定义别名:

<typealiases>
    <!-- 单个别名定义 -->
    <typealias alias="user" type="com.yuanqinnan.model.user" />
    <!-- 批量别名定义,扫描整个包下的类,别名为类名(大小写不敏感) -->
    <package name="cn.itcast.mybatis.pojo" />
    <package name="其它包" />
</typealiases>

五、mappers(映射器)

mapper配置的几种方法:

通过resource加载单个映射文件

<mappers>
    <!-- 映射文件方式1,一个一个的配置-->
    <mapper resource="config/sqlmap/user.xml"/>
    <mapper resource="config/mapper/usermapper.xml"/>
</mappers>

使用mapper接口类路径

  <!-- 通过mapper接口加载单个映射配置文件遵循一定的规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录中;边规范的前提是:使用的是mapper代理方法; -->
  <mapper class="com.yuanqinnan.mapper.usermapper"/>

批量加载mapper(推荐使用)

<!--此种方法要求mapper接口名称和mapper映射文件名称相同,且放在同一个目录中-->
<mapper class="com.yuanqinnan.mapper"/>

 

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网