- Properties
定义属性及读取属性文件
- 定义属性文件
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/development
jdbc.username=root
jdbc.password=123456
- 将属性文件引入sqlMappingConfig文件中
<?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>
<!--用resource引入外部属性配置文件-->
<properties resource="db.properties">
<!--在properties内部用property定义属性-->
<!--如果外部配置文件有该属性,则内部定义的属性会被外部属性覆盖-->
<property name="jdbc.username" value="root"/>
<property name="jdbc.password" value="1234"/>
</properties>
<environments default="development">
<environment id="development">
<!--使用jdbc事务管理-->
<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="demo1/Mapping"/>-->
<mapper resource="demo2/Mapping"/>
</mappers>
</configuration>
使用properties配置后
- Settings
这是Mybatis中极为重要的调整设置,他们会改变Mybatis的运行时行为
<!--用来配置Mybatis中的设置-->
<settings>
<!--开启驼峰映射,为自定义的SQL语句服务-->
<!--设置启用数据库字段下划线映射到java对象的驼峰式命名属性,默认为false-->
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
此时sqlMappingConfig文件如下
<?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>
<!--用resource引入外部属性配置文件-->
<properties resource="db.properties">
<!--在properties内部用property定义属性-->
<!--如果外部配置文件有该属性,则内部定义的属性会被外部属性覆盖-->
<property name="jdbc.username" value="root"/>
<property name="jdbc.password" value="1234"/>
</properties>
<!--用来配置Mybatis中的设置-->
<settings>
<!--开启驼峰映射,为自定义的SQL语句服务-->
<!--设置启用数据库字段下划线映射到java对象的驼峰式命名属性,默认为false-->
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
<environments default="development">
<environment id="development">
<!--使用jdbc事务管理-->
<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="demo1/Mapping"/>-->
<mapper resource="demo2/Mapping"/>
</mappers>
</configuration>
- typeAliases
类型别名的作用是为Java类型设置一个短的名字,方便我们后续的编写
<typeAliases>
<!--单个别名定义-->
<typeAlias alias="Customer" type="demo2.Customer"/>
<!--批量别名定义,扫描整个包下的类,别名为类名(大小写不敏感)-->
<!--注意:如果当前包类与子包类重名,则会报异常,我们可以在类上使用注解@Alias("别名")-->
<package name="demo2"/>
</typeAliases>
定义了别名后,在Mapping中就可以使用别名了
- typeHandlers
无论是Mybatis在预处理语句(PreparedStatement)中设置一个参数时,还是从结果集中取出一个值时,都会用类型处理器将获取的值以合适的方式转换成Java类型。在Mybatis3.4以前的版本需要我们手动注册这些处理器,而在之后的版本处理器都是自动注册的。只需要了解一下即可
- Plugins
插件是Mybatis提供的一个非常强大的机制,允许我们通过插件来修改Mybatis的一些核心行为
- Environments
Mybatis可以配置多种环境,比如开发环境、测试环境、生产环境。而每种环境需要不同的配置,于是我们可以每种环境对应使用一个environment标签来进行配置并指定唯一标识符id。通过environments标签中的default属性指定一个环境的标识符来快速切换环境
Enviroment子标签说明
1、TransactionManager事务管理
type取值(JDBC/MANAGED/自定义),区别如下:
JDBC:使用JDBC的提交和回滚设置,依赖于从数据源得到的连接来管理事务范围
MANAGED:不提交或回滚一个连接,让容器来管理事务的整个生命周期,ManagedTransactionFactory
自定义:实现TransactionFactory接口,此时type=全类名/别名
2、dataSource数据源
type有以下取值
UNPOOLED:不使用连接池UnpooledDataSourceFactory
POOLED:使用连接池PooledDataSourceFactory
JNDI:在EJB或应用服务器这类容器中查找指定的数据源
自定义:实现DataSourceFactory接口,定义数据源的获取方式
在实际开发时,我们会使用Spring来管理数据源并进行事务控制的配置来覆盖上述数据源的配置
- databaseIDProvider
Mybatis可以根据不同的数据库厂商执行不同的sql语句。因此我们可以通过databaseIDProvider标签来进行设置不同厂商
<!--配置不同厂商数据库-->
<databaseIdProvider type="DB_VENDOR">
<property name="MYSQL" value="mysql"/>
<property name="DB2" value="db2"/>
<property name="Oracle" value="oracle"/>
<property name="SQL Server" value="sqlserver"/>
</databaseIdProvider>
- Mappers
- <mapper resource=” ”>
使用相对于类路径的资源
- <mapper class=” ”>
使用mapper接口类路径,要求mapper接口名称和mapper映射文件名称相同,且放在同一个目录中
- <package name=” ”>
指定包下的所有mapper接口,要求mapper接口名称和mapper映射文件名称相同,且放在同一个目录中