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的查询条件。