Mybatis学习笔记(三)——Mybatis的配置(Mybatis-config.xml)
传送门:Mybatis中文网——配置
Mybatis配置文档的顶层结构:
- configuration(配置)
- properties(属性)
- settings(设置)
- typeAliases(类型别名)
- objectFactory(类型处理器)
- plugins(插件)
- environments(环境配置)
- environment(环境变量)
- transactionManager(事务管理器)
- dataSource(数据源)
- databaseIdProvider(数据库厂商标识)
- mappers(映射器)
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<properties resource="jdbc.properties"/>
<!--将_下划线自动映射为驼峰em_pname==emPname-->
<settings>
<setting name="mapUnderscoreToCamelCase" value="true" />
<setting name="logImpl" value="STDOUT_LOGGING" />
</settings>
<typeAliases>
<package name="com.zxm.mybatis.pojo"/>
</typeAliases>
<environments default="development">
<environment id="development">
<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>
<mappers>
<mapper resource="com/zxm/mybatis/ParameterMapper.xml" />
<mapper resource="com/zxm/mybatis/SelectMapper.xml" />
<mapper resource="com/zxm/mybatis/SQLMapper.xml" />
</mappers>
</configuration>
一、属性(Properties)
第一种使用方法(不创建配置文件jdbc.properties)
<properties>
<property name="username" value="root" />
<property name="password" value="root" />
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/mybatis" />
</properties>
< dataSource>连接数据库:
<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>
第二种方法(新建jdbc.properties文件)
jdbc.properties配置文件内容:
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis
jdbc.username=root
jdbc.password=root
mybatis-config.xml中添加代码
<properties resource="jdbc.properties" />
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"></transactionManager>
<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>
三、设置(setting)
使用setting的格式:name< ---- >value
<settings>
<setting name="mapUnderscoreToCamelCase" value="true" />
<setting name="logImpl" value="STDOUT_LOGGING" />
</settings>
常用setting设置:(这里只列举几个常用配置,更多详细配置可以访问Mybatis中文网)
- 自动映射mapUnderscoreToCamelCase
是否开启自动驼峰命名方式,默认值false不开启。
如果表中有字段名为emp_name(有下划线),如果打开自动驼峰命名,设置为true,那该属性在项目中名为empName,相当于把下划线和后一个字母转化为该字母的大写,这个设置可以解决数据库字段名emp_name与项目实体类属性名empName不一致的情况。
具体代码设置:
<setting name="mapUnderscoreToCamelCase" value="true">
- 自动映射autoMappingBehavior
具体代码设置:
<setting name="autoMappingBehavior" value="FULL" />
指定Mybatis应该如何自动映射列(数据表中)到字段或属性(项目实体类中)
NONE:取消自动映射
PARTIAL:只会自动映射。没有定义嵌套结果和映射结果集
FULL:会自动映射任意复杂的结果集
- 缓存cacheEnabled
该配置影响所有映射器中配置缓存的全局开关,默认值为true
具体代码设置:
<setting name="cacheEnabled" value="true" />
- 级联lazyLoadingEnabled
延迟加载的全局开关。当开启时,所有关联对象都会延迟加载。在特定关联关系中可通过设置fetchType属性来覆盖该项的开关状态,默认值为false
具体代码设置:
<setting name="lazyLoadingEnabled" value="true" />
- 级联aggressiveLazyLoading
当启用时,对任意延迟属性的调用会使带有延迟加载属性的对象完整加载;反之,每种属性将会按需加载,版本3.4.1(不包含)之前true,之后false
具体代码设置:
<setting name="aggressiveLazyLoading" value="true">
- defaultFetchSize
设置数据库驱动程序默认返回的条数限制,此参数可以重新设置
具体代码设置:
<setting name="defaultFetchSize" value="100" />
神魔是OOM内存溢出问题?
程序申请内存过大,虚拟机无法满足我们,然后自杀了。