持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第17天,点击查看活动详情
1 引入dtd文件
需要引入http://mybatis.org/dtd/mybatis-3-config.dtd
xml中才能正常出现各种属性的提示。
2 Configuration中的各个属性
2.1 properties
作用: 用来引入外部配置文件。
代码:
<!--引入类路径下的资源-->
<properties resource=""/>
<!--引入网络路径或者磁盘路径下的资源-->
<properties url=""/>
示例: 在全局配置中从外部配置文件获取JDBC的配置信息。
在外部定义一个jdbc.properties
文件:
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis
jdbc.username=root
jdbc.password=41822319
在全局配置文件的<configuration>
标签最上边添加<properties>
标签,
注意一定要写在最上边,不然后边使用的时候会获取不到。
<!--使用properties来引入外部配置文件的内容-->
<properties resource="jdbc.properties"></properties>
通过${属性名}
的形式来获取外部配置文件里的值:
<environments default="mysql">
<environment id="mysql">
<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>
2.2 settings
作用: 包含很多重要的设置项。
代码:
<!--name为设置项,value为设置项的值-->
<settings>
<setting name="" value=""/>
</settings>
在全局配置文件的<configuration>
标签中添加<settings>
标签。
如mapUnderscoreToCamelCase
设为true之后,只要数据库字段名和Java类中的字段名字母一致,就可以忽略大小写和下划线。
<settings>
<!--是否自动开启驼峰命名规则-->
<setting name="mapUnderscoreToCamelCase" value="true"/>
<!--开启log-->
<setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>
2.3 typeAliases
作用: 别名处理器:可以为我们的java类型起别名。
方式1: 为某个java类型起别名(只能一个一个起别名)
- type:指定要起别名的类型全类名;默认别名就是类名小写;employee
- alias:指定新的别名
<typeAliases>
<typeAlias type="site.exciter.mybatis.model.Employee"/>
</typeAliases>
<typeAliases>
<typeAlias type="site.exciter.mybatis.model.Employee" alias="emp"/>
</typeAliases>
方式2:批量起别名(可以给某个包下所有类批量起别名,别名都为类名;但是有可能多个包下有相同的类名,就会导致别名重复)
<typeAliases>
<package name="site.exciter.mybatis.model"/>
</typeAliases>
方式3: 直接在类中使用@Alias
注解
@Alias("emp")
public class Employee {
...
}
使用: 可以在mapper文件中直接使用别名
<select id="getElementById" resultType="emp">
select id, last_name, gender, email
from table_employee
where id = #{id}
</select>
2.4 typeHandlers
类型处理,用于Java类型和数据库类型映射。
2.5 objectFactory
2.6 plugins
插件。
2.7 environments
作用: 用于配置不同的开发环境。
代码:
<environments default="dev_mysql">
<environment id="dev_mysql">
<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>
<environment id="test_mysql">
<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>
default用于选择环境,environments下可以配置多个environment,每个environment需指定一个id,id代表当前环境的唯一标识,然后在default中通过id指定当前的环境。
environment下必须有两个标签:
- transactionManager 事务管理器
type 事务管理器的类型:JDBC(JdbcTransactionFactory)|MANAGED(ManagedTransactionFactory)
自定义事务管理器:实现TransactionFactory接口,ype指定为全类名。
- dataSource 数据源
type 数据源类型:UNPOOLED(UnpooledDataSourceFactory)
|POOLED(PooledDataSourceFactory)
|JNDI(JndiDataSourceFactory)
自定义数据源:实现DataSourceFactory接口,type是全类名。
2.8 databaseIdProvider
作用: 用与支持多数据库厂商。
代码:
<databaseIdProvider type="DB_VENDOR">
<!-- 为不同的数据库厂商起别名 -->
<property name="MySQL" value="mysql"/>
<property name="Oracle" value="oracle"/>
<property name="SQL Server" value="sqlserver"/>
</databaseIdProvider>
type="DB_VENDOR":VendorDatabaseIdProvider
作用就是得到数据库厂商的标识(驱动getDatabaseProductName()),mybatis就能根据数据库厂商标识来执行不同的sql;
MySQL,Oracle,SQL Server等。
如果当前没指定环境,则会使用第一个;如果指定是mysql,则使用第三个;如果指定是oracle环境,则使用第三个去查询。
<select id="getElementById" resultType="emp">
select id, last_name, gender, email
from table_employee
where id = #{id}
</select>
<select id="getElementById" resultType="emp" databaseId="mysql">
select id, last_name, gender, email
from table_employee
where id = #{id}
</select>
<select id="getElementById" resultType="emp" databaseId="oracle">
select id, last_name, gender, email
from table_employee
where id = #{id}
</select>
2.9 mappers
作用: 将sql映射注册到全局配置中。
代码:
<mappers>
<!--映射文件路径-->
<mapper resource="mapper/employee-mapper.xml"/>
<mapper url=""/>
<mapper class=""/>
<package name=""/>
</mappers>
- resource:引用类路径下的sql映射文件。
- url:引用网路路径或者磁盘路径下的sql映射文件。
- class:引用(注册)接口。
1、有sql映射文件,映射文件名必须和接口同名,并且放在与接口同一目录下;
2、没有sql映射文件,所有的sql都是利用注解写在接口上;
推荐:比较重要的,复杂的Dao接口我们来写sql映射文件;不重要,简单的Dao接口为了开发快速可以使用注解。
package:批量注册。
关注木水小站 (zhangmushui.cn)和微信公众号【木水Code】,及时获取更多最新技术干货。