properties
mybatis可以使用properties来引入外部properties配置文件的内容
其下有两个属性 resource,url
resource:引入类路径下的资源
url:引入网络路径或者磁盘路径下的资源
实例
编写数据源配置文件jdbc.driver
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///mybatis
jdbc.username=root
jdbc.password=root
引入数据源配置文件 并改写主配置文件
<?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="config/db.properties"></properties>
<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="config/EmployeeMapper.xml" />
</mappers>
</configuration>
运行结果
Employee [id=1, lastName=张三, email=ZFH_FISH@163.COM, gender=1]
settings
settings包含很多重要的设置项 setting用来设置每一个设置项
mapUnderscoreToCamelCase
开启驼峰命名规则 默认为false 设置为true后会将数据库字段last_name映射Javabean属性 lastName
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
运行结果
Employee [id=1, lastName=张三, email=ZFH_FISH@163.COM, gender=1]
typeAliases
别名设置器 设置别名后 mapper配置文件中返回类型可以不在写全类名
<typeAliases>
<!--typeAlias:为某一个java类型起别名
type:指定要起别名的类型的全类名
alias:指定的新的别名默认是类名小写
-->
<typeAlias type="com.fish.mybatis.Employee" alias="Employee"/>
<!--
package:为某个包下的所有类批量起别名
name:指定包名(为当前包及其下面的全部子包都起一个别名 默认是类名)
-->
<package name="com.fish.mybatis"/>
<!--
某些情况下 项目中有多个名称相同的java类型 这个时候如果使用批量起别名的方法 就会出现多个别名一样的类型
解决办法:在java类型上使用注解@Alias为某个类型指定新的别名
-->
</typeAliases>
environments
-
environments可以为mybatis配置多种环境,default指定使用某种环境
- environment是environments的子标签,配置一个具体的环境信息,其下必须有两个标签transactionManager和dataSource,id代表当前的唯一标识
- transactionManager:事务管理器
- type:事务管理器类型JDBC|MANAGED
- dataSource:数据源
- type:数据源类型UNPOOLED|POOLED|JNDI
- transactionManager:事务管理器
<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>
<environment id="test">
<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> - environment是environments的子标签,配置一个具体的环境信息,其下必须有两个标签transactionManager和dataSource,id代表当前的唯一标识
databaseIdProvider
- databaseIdProvider:用来支持多数据库厂商
- type属性:type=DB_VENDOR
- 作用:得到数据库厂商的标识,mybatis就能根据数据库厂商的标识来执行不同的sql
- property标签:为不同的数据库厂商起别名
- name:厂商名称
- value: 别名
<databaseIdProvider type="DB_VENDOR">
<property name="MySQL" value="mysql"/>
<property name="Oracle" value="oracle"/>
</databaseIdProvider>
- 为select语句指定数据库厂商
<select id="selectEmpById"
resultType="com.fish.mybatis.Employee"
databaseId="mysql">
select * from tbl_employee where id = #{id}
</select>
- type属性:type=DB_VENDOR
mappers
mappers:将sql映射注册到全局配置文件中
- mapper:注册一个sql映射
- resource:引用类路径下的sql映射文件
- url:引用网络路径或者磁盘路径下的sql映射文件
- class引用(注册)接口
- 有映射文件:(配置文件必须与接口同路径且同名)
- 没有映射文件:sql使用注解写在接口上
<mappers>
<mapper resource="config/EmployeeMapper.xml" />
</mappers>
- 批量注册:映射文件与接口同路径且同名
<mappers>
<package name="com.fish.dao"/>
</mappers>