MyBatis-全局配置文件

MyBatis-全局配置文件

一、全局配置文件结构

configuration 配置
  properties 属性:可以加载properties配置文件的信息
  settings 设置:可以设置mybatis的全局属性
  typeAliases 类型命名
  typeHandlers 类型处理器
  objectFactory 对象工厂
  plugins 插件
  environments 环境
    environment 环境变量
      transactionManager 事务管理器
      dataSource 数据源
  databaseIdProvider 数据库厂商标识
  mappers 映射器
  1.为全局配置文件绑定dtd约束:

1)联网会自动绑定
2)没网的时候【/org/apache/ibatis/builder/xml/mybatis-3-config.dtd】:解压mybatis 的jar包然后在eclipse中绑定
1、properties属性
作用:将数据连接单独配置在db.properties中,只需要在SqlMapConfig.xml中加载db.properties的属性值,在SqlMapConfig.xml中就不需要对数据库连接参数进行硬编码。数据库连接参数只配置在db.properties中,方便对参数进行统一管理,其它xml可以引用该db.properties。
db.properties的内容:
在这里插入图片描述
在SqlMapConfig.xml中加载db.properties
在这里插入图片描述
properties特性:
注意:
(1)在properties元素体内定义的属性优先读取。
(2)然后读取properties元素中resource或url加载的属性,它会覆盖已读取的同名属性。
(3)最后读取parameterType传递的属性,它会覆盖已读取的同名属性。
建议:
 (1)不要在properties元素体内添加任何属性值,只将属性值定义在properties文件中。
(2)在properties文件中定义属性名要有一定的特殊性,如xxxx.xxxx(jdbc.driver)。
**2、settings
在 MyBatis 中 settings 是最复杂的配置,它能深刻影响 MyBatis 底层的运行,但是在大部分情况下使用默认值便可以运行,所以在大部分情况下不需要大量配置它,只需要修改一些常用的规则即可,比如自动映射、驼峰命名映射、级联规则、是否启动缓存、执行器(Executor)类型等。settings 配置项说明,如下表所示:

配置项作用
cacheEnabled该配置影响所有映射器中配置缓存的全局开关
lazyLoadingEnabled延迟加载的全局开关。当开启时,所有关联对象都会延迟加载。在特定关联关系中可通过设置 fetchType 属性来覆盖该项的开关状态
aggressiveLazyLoading-当启用时,对任意延迟属性的调用会使带有延迟加载属性的对象完整加载;反之,每种属性将会按需加载
multipleResultSetsEnabled是否允许单一语句返回多结果集(需要兼容驱动)
useColumnLabel使用列标签代替列名。不同的驱动会有不同的表现,具体可参考相关驱动文档或通过测试这两种不同的模式来观察所用驱动的结果
useGeneratedKeys允许JDBC 支持自动生成主键,需要驱动兼容。如果设置为 true,则这个设置强制使用自动生成主键,尽管一些驱动不能兼容但仍可正常工作(比如 Derby)
autoMappingBehavior指定 MyBatis 应如何自动映射列到字段或属性。
autoMappingUnkno wnColumnBehavior指定自动映射当中未知列(或未知属性类型)时的行为。 默认是不处理,只有当日志级别达到 WARN 级别或者以下,才会显示相关日志,如果处理失败会抛出 SqlSessionException 异常
defaultExecutorType配置默认的执行器。SIMPLE 是普通的执行器;REUSE 会重用预处理语句(prepared statements);BATCH 执行器将重用语句并执行批量更新
defaultStatementTimeout设置超时时间,它决定驱动等待数据库响应的秒数
defaultFetchSize设置数据库驱动程序默认返回的条数限制,此参数可以重新设置
safeRowBoundsEnabled允许在嵌套语句中使用分页(RowBounds)。如果允许,设置 false
safeResultHandlerEnabled允许在嵌套语句中使用分页(ResultHandler)。如果允许,设置false
mapUnderscoreToCamelCase是否开启自动驼峰命名规则映射,即从经典数据库列名 A_COLUMN 到经典 Java 属性名 aColumn 的类似映射
localCacheScopeMyBatis 利用本地缓存机制(Local Cache)防止循环引用(circular references)和加速联复嵌套査询。
jdbcTypeForNull当没有为参数提供特定的 JDBC 类型时,为空值指定 JDBC 类型。某些驱动需要指定列的 JDBC 类型,多数情况直接用一般类型即可,比如 NULL、VARCHAR 或 OT
lazyLoadTriggerMethods指定哪个对象的方法触发一次延迟加载
defaultScriptingLanguage指定动态 SQL 生成的默认语言
callSettersOnNulls指定当结果集中值为 null 时,是否调用映射对象的 setter(map 对象时为 put)方法,这对于 Map.kcySet() 依赖或 null 值初始化时是有用的。注意,基本类型(int、boolean 等)不能设置成 null
logPrefix指定 MyBatis 增加到日志名称的前缀
loglmpl指定 MyBatis 所用日志的具体实现,未指定时将自动査找
proxyFactory指定 MyBatis 创建具有延迟加栽能力的对象所用到的代理工具
vfsImpl指定 VFS 的实现类
useActualParamName允许用方法参数中声明的实际名称引用参数。要使用此功能,项目必须被编译为 Java 8 参数的选择。(从版本 3.4.1 开始可以使用)

官方文档settings的例子:
在这里插入图片描述
3、typeAiases(别名)——重点掌握
这是配置中的一个重点,我们知道,在mapper.xml中,定义很多的statement,statement需要parameterType指定输入参数的类型、需要resultType指定输出结果的映射类型。如果在指定类型时输入类型全路径,有时候会很长,不方便进行开发,那么我们就可以针对parameterType或resultType指定的类型定义一些别名,在mapper.xml中通过别名来定义,方便开发。
3.1、Mybatis默认支持的别名

别名映射的类型
_bytebyte
_longlong
_shortshort
_intint
_integerint
_doubledouble
_floatfloat
_booleanboolean
stringString
byteByte
longLong
shortShort
intInteger
integerInteger
doubleDouble
floatFloat
booleanBoolean
dateDate
decimalBigDecimal
bigdecimalBigDecimal

3.2、自定义别名
3.2.1、单个别名定义(在SqlMapConfig.xml)
上面讲的是Mybatis默认支持的一些别名,但是针对pojo的需要我们就要自定义别名了,比如我们将自己定义的User对象取个别名为user,如下:
在这里插入图片描述
UserMapper.xml中引用别名(输入参数或者输出结果为com.mybatis.entity.User时,就可以用user来代替了):
在这里插入图片描述
4、mappers(映射配置)

4.1、通过resource加载单个映射文件
在这里插入图片描述
4.2、通过mapper接口加载单个映射文件
在这里插入图片描述
按照上边的规范,将mapper.java和mapper.xml放在一个目录,且同名。
在这里插入图片描述
4.3、批量加载mapper(推荐使用)

但是还是有个弊端,就跟上面那个别名的配置一样,如果现在有好多个mapper怎么办,所以mybatis也给我们提供了批量加载方法:我们只要指定mapper接口的包名,
在这里插入图片描述
这样com.mybatis.mapper包下的所有mapper.xml映射文件都可以加载了,这就更加简洁了。在开发中推荐使用这种批量加载映射文件的方法。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ZikL♡

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

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

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

打赏作者

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

抵扣说明:

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

余额充值