Mybatis系列二:配置文件参数详解
1、SqlMapConfig.xml配置文件详解
配置名称 |
配置含义 |
配置简介 |
---|---|---|
configration |
|
|
propeties |
|
|
setting |
|
|
typeAliases |
类型别名 |
|
typeHandlers |
类型处理器 |
将SQL中返回的数据库类型转换为相应的Java类型的处理器配置 |
objectFactory |
对象工厂 |
实例化工厂类配置 |
plugins |
|
|
environments |
环境集合属性对象 |
|
environment |
|
|
transactionManager |
事务管理 |
指定Mybatis的事务管理器 |
dataSource |
数据源 |
其中: type-指定数据源的连接类型 property-指定数据库连接池的其他信息:driver,URL,username,password等 |
mappers |
映射器 |
配置SQL映射文件的位置,告知Mybatis去哪里加载SQL映射配置 |
2、properties配置分析
<properties resource="org/mybaties/example/db.properties">
<property name="username" value="root"/>
<property name="password" value="1234"/>
</properties>
如上properties是配置基本数据库信息,其中property中的属性值配置到了文件db.properties中。
在标签properties和标签property中可以使用"${}"进行占位操作。
3、setting配置分析
属性名 |
含义 |
描述 |
有效值 |
默认值 |
---|---|---|---|---|
cacheEnabled |
是否使用缓存 |
全局缓存开关 |
true/false |
true |
lazyLoadingEnabled |
是否开启延迟加载 |
控制全局是否使用延迟加载 |
true/false |
false |
aggressiveLazyLoading |
是否按需加载属性 |
true时,不管调用什么方法加载某个对象,都会加载该对象的所有属性 |
true/false |
false |
multipleResultSetsEnabled |
是否允许单一语句返回多结果集 |
返回多个结果集 |
true/false |
true |
useColumnLabel |
使用列标签代替列名 |
设置使用列标签代替列名 |
true/false |
true |
useGeneratedKeys |
是否支持JDBC自动生成主键 |
设置置换,将会强制使用自动生成主键的策略 |
true/false |
false |
autoMappingBehavior |
指定Mybatis自动映射字段或属性的方式 |
方式1:NONE自动取消映射; 方式2:PARTIAL只会自动映射没有定义结果集的结果映射; 方式3:FULL映射任意复杂的结果集。 |
NONE、PARTIAL、FULL |
PARTIAL |
defaultExecutorType |
设置默认的执行器 |
执行器1:SIMPLE普通执行器; 执行器2:REUSE执行器会重用与处理语句; 执行器3:BATCH执行器将重用语句并执行批量更新。 |
SIMPLE REUSE BATCH |
SIMPLE |
defaultStatementTimeout |
超时时间 |
数据库驱动连接数据库的时间,等待数据库回应的最大秒数 |
任意整数(一般3s) |
无 |
localCacheScope |
利用本地缓存机制防止循环引用和加速重复嵌套查询 |
默认值是session,这种情况下会缓存一个会话中执行的所有查询。如果设置为statement,本地会话仅用在语句执行上,对相同sqlsession的不同调用将不会共享数据。 |
session statement |
session |
jdbcTypeForNull |
jdbc类型的默认值 |
|
null varchar other |
other |
lazyLoadTriggerMethods |
指定某个方法触发一次延迟加载 |
|
一个用逗号分隔的方法列表 |
equals,clone,hashcode,toString |
returnInstanceForEmptyRow |
返回空实体对象 |
当返回的所有列都为空时,Mybatis默认返回full,当开启这个设置时,Mybatis会返回一个空实例。 |
true/false |
false |
logPrefix |
日志前缀 |
指定Mybatis增加到日志名称的前缀 |
任意字符串 |
无 |
logImpl |
日志实现 |
指定Mybatis所用日志的具体实现,未指定时将自动查找 |
|
无 |
proxyFactory |
代理工程 |
指定Mybatis创建具有延迟加载能力的对象所用到的代理工具 |
CGLIB JAVASSIST |
JAVASSIST |
vfsImpl |
vfs实现 |
指定vsf的实现 |
自定义VFS的实现的类权限定名,以逗号分隔 |
无 |
useActualParamName |
使用方法签名 |
允许使用方法签名中的名称作为语句参数名称 |
true/false |
false |
4、typeAliases配置分析
定义别名的规范就是对应包装类的类名首字母变小写。
别名也可以用注解来实现@Alias。其中的参数就是该类对应的别名。
5、Mapper映射文件
属性名 |
含义 |
所属标签 |
---|---|---|
id |
|
select |
parameterType |
|
select |
resultType |
|
select |
resultMap |
|
select |
flushCache |
是否清空本地缓存和二级缓存 |
select |
useCache |
执行结果是否保存二级缓存 |
select |
timeout |
抛出异常前,程序等待的最大秒数 |
select |
fetchSize |
设置驱动程序每次批量返回结果的行数 |
select |
statementType |
statement的类型 |
select |
resultSetType |
结果集类型 |
select |
databaseId |
|
select |
resultOrdered |
在嵌套查询语句中使用,如果设置为true,则表示SQL执行结果为嵌套结果或分组 |
select |
resultSets |
|
select |
userGeneratedKeys |
获取有数据库内部生成的主键,插入是返回主键id等。 |
insert/update |
keyProperty |
代表主键,一般和userGeneratedKeys使用 |
insert/update |
keyColum |
当主键列不是表中的第一列时需要设置该属性。如果希望得到多个生成的列,也可以用逗号分隔属性名称列表。 |
insert/update |
6、其他基础信息
1、使用${}接受用户传来的字符串并将其拼接到SQL语句中是不安全,会引发SQL注入攻击。
2、Mapper配置输出的对象中可以使Map集——resultMap。
3、discriminator(鉴别器):需要根据某个字段的值,来决定关联哪种结果集。(本质就是对象引用)
4、当查询语句的查询条件由于输入参数的不同无法确切定义时,可以使用“<where>”和“<if test="">”来设置SQL的查询条件。
本文地址:https://blog.csdn.net/qq_30507287/article/details/85965863