mybatis之旅第三篇-SqlMapConfig.xml全局配置文件解析
程序员文章站
2022-04-14 17:02:52
一、前言 刚换工作,为了更快的学习框架和了解业务,基本每天都会加班,导致隔了几天没有进行总结,心里总觉得不安,工作年限越长越感到学习的重要性,坚持下去!!! 经过前两篇的总结,已经基本掌握了mybatis的开发模式,这篇主要是总结SqlMapConfig.xml文件的配置 SqlMapConfig. ......
一、前言
刚换工作,为了更快的学习框架和了解业务,基本每天都会加班,导致隔了几天没有进行总结,心里总觉得不安,工作年限越长越感到学习的重要性,坚持下去!!!
经过前两篇的总结,已经基本掌握了mybatis的开发模式,这篇主要是总结sqlmapconfig.xml文件的配置
作用 | |
---|---|
properties | 用来加载属性文件 |
settings | 用来设置全局参数 |
typealiases | 用来设置类型的别名 |
typehandlers | 用来设置类型处理器 |
objectfactory | 用来设置对象工厂 |
plugins | 用来设置插件 |
environments | 用来设置mybatis的环境 |
mappers | 用来配置映射文件 |
注:配置文件必须按照此顺序进行配置
下面依次来介绍各个配置
内容如下:
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 加载的属性,它会覆盖已读取的同名属性
三、
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>
四、
映射的类型 | |
---|---|
_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.xml映射文件名称保持一致,且在一个目录中;边规范的前提是:使用的是mapper代理方法; --> <mapper class="com.yuanqinnan.mapper.usermapper"/>
批量加载mapper(推荐使用)
<!--此种方法要求mapper接口名称和mapper映射文件名称相同,且放在同一个目录中--> <mapper class="com.yuanqinnan.mapper"/>