MyBatis -- configuration配置详解

1、configuration有什么作用?

configuration管理MyBatis的配置,MyBatis的所有配置信息都存放的在configuration中。

下面我们看看configuration可配置的属性有哪些:

1.1  properties属性

实例:

<properties resource="org/mybatis/example/config.properties"> 
<property name="username" value="dev_user"/> 
<property name="password" value="F2Fa3!33TYyg"/> 
</properties>
这些都是外部化的,可替代的属性。其中的属性就可以再整个配置文件中使用,使用可替换的属性来实现动态配置,如下:

<dataSource type="POOLED"> 
<property name="driver" value="${driver}"/> 
<property name="url" value="${url}"/> 
<property name="username" value="${username}"/> 
<property name="password" value="${password}"/> 
</dataSource>
如果这些地方属性多余一个,没MyBatis按照下面的顺序加载:

在properties元素体内指定的属性首先被读取。

从类路径下资源或者properties元素的eurl属性中加载的属性第二被读取,它会覆盖已经存在的完全一样的属性。

作为方法参数船传递的属性最后被读取,他会覆盖任一已存在的完全一样的属性。

1.2  setings

这些是非常重要的属性,他会修改MyBatis在运行时的行为方式。如果不熟悉配置建议使用默认配置。

实例:

<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="enhancementEnabled" value="false"/> 
<setting name="defaultExecutorType" value="SIMPLE"/> 
<setting name="defaultStatementTimeout" value="25000"/> 
</settings>
参数 表格:

设置参数

描述

有效值

默认值

cacheEnabled

这个配置使全局的映射器启用或禁用缓存。

true | false

true

lazyLoadingEnabled

全局启用或禁用延迟加载。当禁用时,所有关联对象都会即时加载。

true | false

true

aggressiveLazyLoading

当启用时,有延迟加载属性的对象在被调用时将会完全加载任意属性。否则,每种属性将会按需要加载。

true | false

true

multipleResultSetsEnabled

允许或不允许多种结果集从一个单独的语句中返回(需要适合的驱动)。

true | false

true

useColumnLabel

使用列标签代替列名。不同的驱动在这方便表现不同。参考驱动文档或充分测试两种方法来决定所使用的驱动。

true | false

true

useGeneratedKeys

允许JDBC支持生成的键。需要适合的驱动。如果设置为true则这个设置强制生成的键被使用,尽管一些驱动拒绝兼容但仍然有效(比如Derby)。

true | false

false

autoMappingBehavior

指定MyBatis如何自动映射列到字段/属性。PARTIAL只会自动映射简单,没有嵌套的结果。FULL会自动映射任意复杂的结果(嵌套的或其他情况)。

NONE,

PARTIAL,

FULL

PARTIAL



1.3  typeAliases类型命名

实例:

<typeAliases> 
<typeAlias alias="Author" type="domain.blog.Author"/> 
<typeAlias alias="Blog" type="domain.blog.Blog"/> 
<typeAlias alias="Comment" type="domain.blog.Comment"/> 
<typeAlias alias="Post" type="domain.blog.Post"/> 
<typeAlias alias="Section" type="domain.blog.Section"/> 
<typeAlias alias="Tag" type="domain.blog.Tag"/> 
</typeAliases>

别名是为Java类型命名一个短的名字。它只用在XML配置文件里,用来减少类完全限定名的多余部分。例如在配置文件里需要使用domain.blog.Author的地方可以简单的使用Author替换。

对于普通的java类型,有很多的内建的别名。(大小写不敏感),如下

别名

映射的类型

_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

object

Object

map

Map

hashmap

HashMap

list

List

arraylist

ArrayList

collection

Collection

iterator

Iterator



1.4typeHandlers类型处理器

实例:

<typeHandlers> 
<typeHandler javaType="String" jdbcType="VARCHAR" handler="org.mybatis.example.ExampleTypeHandler"/> 
</typeHandlers>
无论是MyBatis在预处理语句中设置一个参数,还是从结果集中取出一个值时,类型处理器被用来将获取的值以合适的方式转换成Java类型。

Mybatis已经有了若干个类型处理器了,如下:

类型处理器

Java类型

JDBC类型

BooleanTypeHandler

Boolean,boolean

任何兼容的布尔值

ByteTypeHandler

Byte,byte

任何兼容的数字或字节类型

ShortTypeHandler

Short,short

任何兼容的数字或短整型

IntegerTypeHandler

Integer,int

任何兼容的数字和整型

LongTypeHandler

Long,long

任何兼容的数字或长整型

FloatTypeHandler

Float,float

任何兼容的数字或单精度浮点型

DoubleTypeHandler

Double,double

任何兼容的数字或双精度浮点型

BigDecimalTypeHandler

BigDecimal

任何兼容的数字或十进制小数类型

StringTypeHandler

String

CHAR和VARCHAR类型

ClobTypeHandler

String

CLOB和LONGVARCHAR类型

NStringTypeHandler

String

NVARCHAR和NCHAR类型

NClobTypeHandler

String

NCLOB类型

ByteArrayTypeHandler

byte[]

任何兼容的字节流类型

BlobTypeHandler

byte[]

BLOB和LONGVARBINARY类型

DateTypeHandler

Date(java.util)

TIMESTAMP类型

DateOnlyTypeHandler

Date(java.util)

DATE类型

TimeOnlyTypeHandler

Date(java.util)

TIME类型

SqlTimestampTypeHandler

Timestamp(java.sql)

TIMESTAMP类型

SqlDateTypeHandler

Date(java.sql)

DATE类型

SqlTimeTypeHandler

Time(java.sql)

TIME类型

ObjectTypeHandler

Any

其他或未指定类型

EnumTypeHandler

Enumeration类型

VARCHAR-任何兼容的字符串类型,作为代码存储(而不是索引)

1.5 plugins插件

实例:

<plugins> 
<plugin interceptor="org.mybatis.example.ExamplePlugin"> 
<property name="someProperty" value="100"/> 
</plugin> 
</plugins>
插件可以改变某些类的执行, MyBatis允许被插件来拦截的类有:

Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed) 
ParameterHandler (getParameterObject, setParameters) 
ResultSetHandler (handleResultSets, handleOutputParameters) 
StatementHandler (prepare, parameterize, batch, update, query)
1.6environments环境

environments里可以配置多个environment,每个environment对应一个数据库环境。一个完整的定义如下:

<environments default="development"> 
<environment id="development"> 
<transactionManager type="JDBC"> 
</transactionManager> 
<dataSource type="POOLED"> 
<property name="driver" value="${driver}"/> 
<property name="url" value="${url}"/> 
<property name="username" value="${username}"/> 
<property name="password" value="${password}"/> 
</dataSource> 
</environment> 
</environments>

environments里的default属性表示默认的数据库环境,与某个environment的id相对应。

environment环境变量

environment通过id属性与其他数据库环境区别。它有两个子节点:

transactionManager事务管理器

MyBatis中有两种事务管理器类型(也就是type=”[JDBC|MANAGED]”):

JDBC这个配置直接简单使用了JDBC的提交和回滚设置。它依赖于从数据源得到的连接来管理事务范围。

MANAGED这个配置几乎没做什么。它从来不提交或回滚一个连接。而它会让容器来管理事务的整个生命周期(比如SpringJEE应用服务器的上下文)

dataSource数据源

MyBatis中有三种数据源类型(也就是type=”[UNPOOLED | POOLED| JNDI]”):

UNPOOLED –这个数据源的实现是每次被请求时简单打开和关闭连接,需要配置的属性:

driver – 这是JDBC驱动的Java类的完全限定名

url – 这是数据库的JDBC URL地址。

username – 登录数据库的用户名。

password – 登录数据库的密码。

defaultTransactionIsolationLevel – 默认的连接事务隔离级别。

POOLED –mybatis实现的简单的数据库连接池类型,它使得数据库连接可被复用,不必在每次请求时都去创建一个物理的连接。

JNDI – 通过jndi从tomcat之类的容器里获取数据源。

1.7 mapper映射器

实例:

<mappers> 
<mapper resource="org/mybatis/builder/AuthorMapper.xml"/> 
<mapper resource="org/mybatis/builder/BlogMapper.xml"/> 
<mapper resource="org/mybatis/builder/PostMapper.xml"/> 
</mappers>
Mappers用于告诉Mybatis去哪里寻找sql映射文件。sql映射文件是Mybatis最灵活的地方

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
mybatis-config.xml是MyBatis的核心配置文件,用于配置MyBatis的全局信息和运行时行为。该文件包含了数据库连接信息和MyBatis所需的各种特性设置和属性。在实际开发中,我们通常会将数据库连接参数单独配置在db.properties文件中,然后在mybatis-config.xml中加载db.properties的属性值,这样就不需要在mybatis-config.xml中硬编码数据库连接参数。\[1\] mybatis-config.xml的结构包括: 1. configurationMyBatis配置信息 2. properties:可以配置在Java属性配置文件中的属性 3. settings:修改MyBatis在运行时的行为方式的设置 4. typeAliases:为Java类型命名一个别名(简称) 5. typeHandlers:类型处理器 6. objectFactory:对象工厂 7. plugins:插件 8. environments:环境配置 9. environment:环境变量 10. transactionManager:事务管理器 11. dataSource:数据源 12. mappers:映射器配置mybatis-config.xml中,可以使用<typeAliases>标签来定义别名。可以通过单个别名定义或批量别名定义来为Java类型命名别名。批量别名定义可以扫描指定包下的类,将类名作为别名(首字母大写或小写都可以)。\[3\] 总之,mybatis-config.xml是MyBatis的核心配置文件,用于配置全局信息和运行时行为,包含了数据库连接信息和各种特性设置和属性。可以通过配置文件来加载数据库连接参数,避免在配置文件中硬编码。同时,还可以使用<typeAliases>标签来定义Java类型的别名。 #### 引用[.reference_title] - *1* *3* [mybatis-config.xml文件的详情](https://blog.csdn.net/qq_60261230/article/details/126524763)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Mybatis-config.xml配置文件基础配置详解](https://blog.csdn.net/qq_43795348/article/details/109553684)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值