java框架---MyBatis全局配置文件

Posted liujingche00

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java框架---MyBatis全局配置文件相关的知识,希望对你有一定的参考价值。

以下均放在configuration标签下

1.properties标签

可以使用properties标签引入外部properties配置文件的内容

两个属性:

resource:引入类路径下的资源

url:引入网络路径或者磁盘路径下的资源

<?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="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>
    <!-- 一定要将写好的sql映射文件(EmployeeMapper.xml)注册到全局配置文件(mybatis-config.xml)中 -->
    <mappers>
        <!-- 如果映射文件在包下,则用"包名/文件名" -->
        <mapper resource="EmployeeMapper.xml" />
    </mappers>
</configuration>
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/books?serverTimezone=GMT%2B8
jdbc.username=root
jdbc.password=root

 

2.settings标签

运行时行为设置,其中包含了许多重要的设置项

    <settings>
        <!-- 将自动驼峰命名规则映射打开 -->
        <setting name="mapUnderscoreToCamelCase" value="true" />
    </settings> 

 

3.typeAliasese标签

别名处理器可以为java类型起别名

    <!-- 别名处理器,别名不区分大小写 -->
    <typeAliases>
        <!-- typeAlias:为某一个类起别名 
                type:被起别名类的全类名 默认别名就是类名小写
                alias: 别名        
        -->
        <!-- <typeAlias type="com.bird.mybatis.bean.Employee" alias="emp"/> -->
        
        <!-- package: 为某个包下所有的类其别名 
                name: 指定包名(为当前包以及所有后代包的每一个类都起一个默认别名:类名小写
        -->
        <package name="com.bird.mybatis.bean"/>
        
        <!-- @alias:在批量起别名的情况下使用@Alias注解为某个类指定别名 -->
    </typeAliases>

技术图片

 

 

 注:1.最好少用起别名,全路径类名结构更清晰,而且可以快速切换到指定类中

  2.myBatis为java的一些常用类型已经起好了别名,注意不要重复

 

4.typeHandlers标签:

类型处理器,是数据库和java之间类型转换的桥梁,将数据库的类型与java的数据类型分别映射

 

5.plugins标签

插件,拦截4大对象:

执行器   Executor(update,query,flushStatements,commit,rollback,getTransaction)

参数处理器  ParameterHandler(getParameterObject,setParameterObject)

结果集处理器  ResultSetHandler(handleResultSets,handleOutputParameters)

sql语句处理器  StatementHandler(prepare,parameterize,batch,update,query)

 

6.environmenst标签

MyBatis可以配置多种环境,default属性指定使用某种环境,可以达到快速切换环境

每个environment标签配置一个具体的环境信息,id代表当前环境唯一标识,其中必须包含两个标签:

  transactionManager 事务管理器,其中type属性是事务管理器的类型:

           JDBC(JdbcTransactionFactory) | MANAGED(ManagedTransactionFactory) | 自定义事务管理器:实现TransactionFactory接口,type为全类名

  dataSource 数据源 type取值:UNPOOLED | POOLED | JNDI | 自定义数据源:实现DataSourceFactory接口,type值为全类名

    <environments default="development">
        <environment id="test">
            <transactionManager type="MANAGED"></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="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>

 

7.databaseIdProvider标签:

支持多i数据库厂商, type属性值为"DB_VENDOR" 作用是得到数据库厂商的标识(驱动),MyBatis就可以根据不同的厂商执行不同的sql 

<!-- 数据库厂商支持 -->
    <databaseIdProvider type="DB_VENDOR">
        <!-- 为不同数据库厂商起别名 -->
        <property name="Mysql" value="mysql"/>
        <property name="Oracle" value="oracle"/>
        <property name="SQL Server" value="sqlserver"/>
    </databaseIdProvider>

在sql映射文件中可以使用databaseId属性来标明此sql语句是运行在哪个数据库下的

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE mapper 
 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 
<!-- namespace:名称空间(若使用接口式编程,与EmployeeMapper接口全类名一致)
    id:唯一标识(与接口中的方法名对应)
    resultType:返回值类型(与对应方法的返回值对应)
    databaseId: 执行的sql语句的数据库厂商环境
    #{id}:从传递过来的参数中取出id值
   
 -->
<mapper namespace="com.bird.mybatis.dao.EmployeeMapper">
    <select id="getEmpById" resultType="emp"> 
        <!-- select id,last_name lastName,gender,email from tbl_employee where id = #{id} -->
        select * from tbl_employee where id = #{id}
    </select>
    <select id="getEmpById" resultType="emp" databaseId="mysql"> 
        <!-- select id,last_name lastName,gender,email from tbl_employee where id = #{id} -->
        select * from tbl_employee where id = #{id}
    </select>
    <select id="getEmpById" resultType="emp" databaseId="orcle"> 
         select id,last_name lastName,gender,email from tbl_employee where id = #{id}
    </select>
</mapper>

注:若一个环境下有多个不同的方法实现,则取范围最精确的,比如上面代码中在mysql环境下getEmpById有两个实现可用,使用第二个更精确的

 

8.mappers标签

注册sql映射文件:

将sql映射注册到全局配置中,mapper标签注册一个sql映射,其属性有:

resource: 引用类路径下的sql映射文件    <mapper resource="org/mybatis/builder/BlogMapper.xml"/>

url: 引用网路路径或者磁盘路径下的sql映射文件   <mapper url="file:///var/mappers/BlogMapper.xml"/> 

注册接口:

  class:  注册(引用)接口    <mapper class="org.mybatis.builder.BlogMapper"/> 

    方法1:有sql映射文件,映射文件名必须与接口同名,并且放在同一目录下

    方法2:没有sql映射文件,所有sql利用注解写在接口中  

    注:重要的,复杂的Dao接口推荐使用sql映射文件,简单的,不重要的为了开发方便则使用注解

  package标签批量注册:

    和方法1是一样的,但是一次性注册一个包的接口

<!-- 一定要将写好的sql映射文件(EmployeeMapper.xml)注册到全局配置文件(mybatis-config.xml)中 -->
    <mappers>
        <!-- 如果映射文件在包下,则用"包名/文件名" -->
        <mapper resource="mybatis/mappers/EmployeeMapper.xml" />
        
        <!-- 注册接口 -->
        <mapper class="com.bird.mybatis.dao.EmployeeMapperAnnotation" />
    </mappers>

接口:

package com.bird.mybatis.dao;

import org.apache.ibatis.annotations.Select;

import com.bird.mybatis.bean.Employee;

public interface EmployeeMapperAnnotation {
    @Select("select * from tbl_employee where id = #{id}")
    public Employee getEmpById(Integer id); 
}

 

配置标签的顺序是固定的,顺序不对编译会报错

以上是关于java框架---MyBatis全局配置文件的主要内容,如果未能解决你的问题,请参考以下文章

MyBatis框架学习

Java框架之MyBatis 06-全局配置-mapper映射-分步查询

mybatis 框架 sqlMapCongfig.xml 全局配置文件

Mybatis源码解析MyBatis解析全局配置文件

Java_myBatis_全局配置文件

MyBatis基本入门篇