1、引入dtd约束
- window -> preference -> XML -> XML Catalog
- 点击add,在key栏填入:http://mybatis.org/dtd/mybatis-3-config.dtd,将key type选为URI
- 在Location栏选择mybatis-3-config.dtd文件
- 点击ok,完成
2、properties标签引入外部配置文件
mybatis可以使用properties来引入外部properties配置文件的内容;
- resource:引入类路径下的资源。
- url:引入网络路径或磁盘路径下的资源
<properties resource="dbconfig.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>
3、settings标签设置运行时行为
settings包含很多重要的设置项
- setting: 用来设置每一个设置项
- name: 设置项名
- value: 设置项取值
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
4、为java类型起别名
注意:别名不区分大小写
4.1 typeAliases标签
typeAliases:别名处理器,可以为Java类型起别名
- typeAlias:为某个java类型起别名
- type: 指定要起别名的类型全类名;
- alias: 指定新的别名。若不设置该值,则默认别名就是类名小写
<typeAliases>
<typeAlias type="mybatis.bean.Employee" alias="emp"/>
</typeAliases>
4.2 package标签 批量起别名
package:为某个包下的所有类批量起别名
* name:指定包名。(为当前包以及所有的子包的每一个类都起一个默认别名(类名小写))
<typeAliases>
<!-- <typeAlias type="mybatis.bean.Employee" alias="emp"/> -->
<package name="mybatis.bean"/>
</typeAliases>
4.3 @Alias注解(批量起别名的情况下)
在批量起别名的情况下,可以使用@Alias注解为某个类型指定新的别名。
@Alias("emp")
public class Employee {
...
}
4.4 MyBatis的默认别名
| Alias | Mapped Type |
|---|---|
| _byte | byte |
| _long | long |
| _short | short |
| _int | int |
| _integer | int |
| _double | double |
| _float | float |
| _boolean | boolean |
| string | String |
| byte | Byte |
| long | Long |
| short | Short |
| int | Integer |
| integer | Integer |
| double | Double |
| float | Float |
| boolean | Boolean |
| date | Date |
| decimal | BigDecimal |
| bigdecimal | BigDecimal |
| object | Object |
| map | Map |
| hashmap | HashMap |
| list | List |
| arraylist | ArrayList |
| collection | Collection |
| iterator | Iterator |
5、 运行环境
-
: 环境们,mybatis可以配置多种环境,default属性指定使用某种环境,以此快速切换环境。 -
: 配置一个具体的环境信息,id属性代表当前环境的唯一标识。必须包含 和 两个标签。 -
: 事务管理器; - type属性:事务管理器的类型。 JDBC(JdbcTransactionFactory) | MANAGED(ManagedTransactionFactory)
- 自定义事务管理器:实现TransactionFactory接口,type指定为全类名
- type属性:事务管理器的类型。 JDBC(JdbcTransactionFactory) | MANAGED(ManagedTransactionFactory)
-
:数据源。 - type属性:数据源类型;UNPOOLED(UnpooledDataSourceFactory) | POOLED(PooledDataSourceFactory) | JNDI(JndiDataSourceFactory)
- 自定义数据源:实现DataSourceFactory接口,type是全类名
- type属性:数据源类型;UNPOOLED(UnpooledDataSourceFactory) | POOLED(PooledDataSourceFactory) | JNDI(JndiDataSourceFactory)
-
-
<environments default="development">
<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>
<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>
6、databaseIdProvider 多数据库支持
: 支持多数据库厂商; - type="DB_VENDOR": VendorDatabaseProvider;作用就是得到数据库厂商的标识(驱动getDatabaseProductName()),mabatis就能根据数据库厂商标识来执行不同的sql。
全局配置文件(mybatis-config.xml):
<databaseIdProvider type="DB_VENDOR">
<!-- 为不同的数据库厂商起别名 -->
<property name="MySQL" value="mysql" />
<property name="Oracle" value="oracle" />
<property name="SQL Server" value="sqlserver" />
</databaseIdProvider>
sql映射文件中可以使用databaseId属性指定数据库厂商的别名
<!-- 带数据库标识的和所有不带数据库标识的都会被加载 ,之后会根据具体的环境执行更精确的sql-->
<select id="getEmpById" resultType="mybatis.bean.Employee" >
select * from tbl_employee where id = #{id}
</select>
<select id="getEmpById" resultType="mybatis.bean.Employee" databaseId="mysql">
select * from tbl_employee where id = #{id}
</select>
<select id="getEmpById" resultType="mybatis.bean.Employee" databaseId="oracle">
select EMPLOYEE_ID id, LAST_NAME lastName, EMAIL email
from employees where EMPLOYEE_ID = #{id}
</select>
7、 注册sql映射
: 将sql映射到全局配置中 : 注册一个sql映射
注册配置文件- resource属性: 引用类路径下的sql映射文件
- url属性: 引用网络路径或磁盘路径下的sql映射文件
注册接口 - class属性: 引用(注册)接口
- 有sql映射文件,映射文件名必须和接口同名,并且放在与接口同一目录下;
- 没有sql映射文件,所有sql都是利用注解写在接口上
推荐:- 比较重要的,复杂的Dao接口写sql映射文件;
- 不重要的,简单的Dao接口为了开发快速可以使用注解;
<!-- 将sql映射文件注册到全局配置文件中 -->
<mappers>
<mapper resource="mybatis/mapper/EmployeeMapper.xml" />
<!-- <mapper class="mybatis.dao.EmployeeMapper"/> -->
<mapper class="mybatis.dao.EmployeeMapperAnnotation"/>
</mappers>
注解方式:
public interface EmployeeMapperAnnotation {
@Select("select * from tbl_employee where id=#{id}")
public Employee getEmpById(Integer id);
}
: 批量注册。 映射文件名必须和接口同名,并且放在与接口同一目录下
<!-- 将sql映射文件注册到全局配置文件中 -->
<mappers>
<!-- <mapper resource="mybatis/mapper/EmployeeMapper.xml" /> -->
<!-- <mapper class="mybatis.dao.EmployeeMapper"/> -->
<!-- <mapper class="mybatis.dao.EmployeeMapperAnnotation"/> -->
<!-- 批量注册 -->
<package name="mybatis.dao"/>
</mappers>