MyBatis-2 全局配置文件

  MyBatis的全局配置文件中包含了影响MyBatis行为甚深的设置(settings)和属性(properties)信息,文档的顶层结构如下:
  这里写图片描述
  其中,MyBatis全局配置文件的具体测试代码下载地址:http://download.csdn.net/download/bingbeichen/9813367


1. 引入dtd约束文件

  在Eclipse中引入XML文件的dtd约束文件,方便编写XML文件时有相应的提示;其中,dtd文件位于MyBatis所依赖jar包的org.apache.ibatis.builder.xml包中,可以通过解压文件的方式来获取。具体引入操作请自行查询完成。


2. properties标签:引入外部属性文件

<!-- 类路径下的db.properties资源文件 -->
jdbc.username=root
jdbc.password=root
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis
<!-- 类路径下的mybatis-config.xml配置文件 -->
<configuration>

    <!-- 
        properties标签:用于引入外部properties配置文件的内容
            resource属性:引入类路径下的资源文件
            url属性:引入网络或磁盘路径下的资源文件
     -->
    <properties resource="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>

    <!-- 将SQL映射文件(EmployeeMapper.xml)注册到全局配置文件(mybatis-config.xml)中 -->
    <mappers>
        <mapper resource="EmployeeMapper.xml" />
    </mappers>

</configuration>

3. settings标签:设置运行时行为

  这里写图片描述


4. typeAliases标签:别名处理器

  可以使用typeAliases标签为某个Java类起一个简短的别名,注意别名不区分大小写。

<typeAliases>
    <!-- 方式一:为某个指定的Java类型起别名,其默认别名为类名小写 -->
    <typeAlias type="com.qiaobc.mybatis.bean.Employee" alias="emp"/>

    <!-- 方式二:为某个包(包含子包)下的所有类批量其别名 -->
    <package name="com.qiaobc.mybatis.bean"/>

    <!-- 方式三:批量起别名时,若别名重复则可使用@Alias注解为某个类型指定新的别名 -->
</typeAliases>

  值得注意的是,MyBatis已经为许多常见的Java类型内建了相应的类型别名;其都是大小写不敏感的,故在起别名的时候千万不要占用已有的內建别名。


5. typeHandlers标签:类型处理器

  类型处理器可以理解为数据库类型和Java类型之间的桥梁。无论是MyBatis在预处理语句(PreparedStatement)中设置一个参数时,还是从结果集中取出一个值时, 都会用类型处理器将获取的值以合适的方式转换成Java类型。
  日期类型处理:日期和时间类型的处理在JDK1.8以前一直是个头疼的问题,我们通常使用JSR310规范领导者Stephen Colebourne创建的Joda-Time来操作,而JDK1.8已经实现了全部的JSR310规范;在日期时间处理上,可以使用MyBatis基于JSR310(Date and Time API)编写的各种日期时间类型处理器;MyBatis3.4以前的版本需要手动注册这些处理器,以后的版本都是自动注册的。
  自定义类型处理器:需要实现org.apache.ibatis.type.TypeHandler接口或者继承org.apache.ibatis.type.BaseTypeHandler,再指定其映射某个JDBC类型(可选操作),并在MyBatis全局配置文件中进行注册。


6. plugins标签:插件

  插件是MyBatis提供的一个非常强大的机制,可以通过插件来修改MyBatis的一些核心行为;插件通过动态代理机制,可以介入四大对象的任意方法的执行。

  • Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed)
  • ParameterHandler (getParameterObject, setParameters)
  • ResultSetHandler (handleResultSets, handleOutputParameters)
  • StatementHandler (prepare, parameterize, batch, update, query)

7. environments标签:运行环境

<!-- 
    environments标签:MyBatis可以配置多种环境,default指定使用某种环境,可以达到快速切换环境的效果。
        environment:配置一个具体的环境信息;必须有两个标签;id代表当前环境的唯一标识
            transactionManager:事务管理器;
                type:事务管理器的类型;   JDBC(JdbcTransactionFactory)
                                        |MANAGED(ManagedTransactionFactory)
                    自定义事务管理器:实现TransactionFactory接口.type指定为全类名

            dataSource:数据源;
                type:数据源类型;      UNPOOLED(UnpooledDataSourceFactory)
                                |POOLED(PooledDataSourceFactory)
                                |JNDI(JndiDataSourceFactory)
                自定义数据源:实现DataSourceFactory接口,type是全类名
 -->

  需要注意的是,实际开发中使用Spring管理数据源,并进行事务控制的配置来覆盖上述配置,故上述内容了解即可。


8. databaseIdProvider标签:多数据库支持

<!-- 快速切换MySQL和Oracle数据库环境 -->   
<environments default="dev_mysql">
    <environment id="dev_mysql">
        <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>

    <environment id="dev_oracle">
        <transactionManager type="JDBC" />
        <dataSource type="POOLED">
            <property name="driver" value="${orcl.driver}" />
            <property name="url" value="${orcl.url}" />
            <property name="username" value="${orcl.username}" />
            <property name="password" value="${orcl.password}" />
        </dataSource>
    </environment>
</environments>


<!-- databaseIdProvider标签:支持多数据库厂商;
     type="DB_VENDOR":VendorDatabaseIdProvider
        作用:获取数据库厂商的标识(根据驱动),MyBatis据此来执行不同的SQL语句
  -->
<databaseIdProvider type="DB_VENDOR">
    <!-- 为不同的数据库厂商起别名 -->
    <property name="MySQL" value="mysql"/>
    <property name="Oracle" value="oracle"/>
    <property name="SQL Server" value="sqlserver"/>
</databaseIdProvider>
<!-- EmployeeMapper.xml:为不同的数据库厂商提供不同的SQL语句 -->
<select id="getEmpById" resultType="com.atguigu.mybatis.bean.Employee"
    databaseId="mysql">
    select * from tbl_employee where id = #{id}
</select>
<select id="getEmpById" resultType="com.atguigu.mybatis.bean.Employee"
    databaseId="oracle">
    select EMPLOYEE_ID id,LAST_NAME lastName,EMAIL email 
    from employees where EMPLOYEE_ID=#{id}
</select>

9. mappers标签:注册SQL映射文件

<!-- 6、mappers:将sql映射文件注册到全局配置中 -->
<mappers>
    <!-- 
        mapper注册配置文件:
            resource:引用类路径下的sql映射文件,如mybatis/mapper/EmployeeMapper.xml
            url:引用网路路径或者磁盘路径下的sql映射文件,如file:///var/mappers/AuthorMapper.xml

        mapper注册接口:
            class:引用(注册)接口,
                1、有sql映射文件,映射文件名必须和接口同名,并且放在同一目录下;
                2、没有sql映射文件,所有的sql都是利用注解写在接口上;
                推荐:比较重要的,复杂的Dao接口我们来写sql映射文件
                      不重要,简单的Dao接口为了开发快速可以使用注解;
    -->
    <!-- <mapper resource="mybatis/mapper/EmployeeMapper.xml"/> -->
    <!-- <mapper class="com.atguigu.mybatis.dao.EmployeeMapperAnnotation"/> -->

    <!-- 批量注册: -->
    <package name="com.atguigu.mybatis.dao"/>
</mappers>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值