Mybatis配置文件详解(三)

文章为学习总结,仅供参考
Mybatis最好的学习方式就是看官方,多练习。相关配置的介绍都在官网上有讲解。

<?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>
    <!--
    当需要引入外部的配置文件的时候,可以使用这样的方式
    类似于<context:property-placeholder location>
    resource:表示从当前项目的类路径中进行加载,如果用的是idea指的是resource资源目录下的配置文件
    url:可以从当前文件系统的磁盘目录查找配置,也可以从网络上的资源进行引入
    -->
    <properties resource="db.properties" ></properties>
    <!--可以影响mybatis运行时的行为,包含N多个属性,需要什么引入什么-->
    <settings>
        <!--开启驼峰标识验证-->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>
    <!--typeAliases:表示在引入实体类的名称时候,可以使用别名,而不需要写完全限定名-->
    <typeAliases>
        <!--每一个具体的类都需要单独来写,如果有100个类呢?-->
<!--        <typeAlias type="com.mashibing.bean.Emp" alias="aaa"></typeAlias>-->
        <!--可以指定具体的包来保证实体类不需要写完全限定名-->
        <package name="com.mashibing.bean"/>
    </typeAliases>

    <!--设置定义自己的类型处理器,mybatis中默认内置了很多类型处理器,一般不需要自己来实现-->
<!--    <typeHandlers>-->
<!--        <typeHandler handler="" ></typeHandler>-->
<!--        <package name=""/>-->
<!--    </typeHandlers>-->
<!--当需要自定义对象工厂的时候实现此标签,完成结果集到java对象实例化的过程-->
<!--    <objectFactory type=""></objectFactory>-->

    <!--在项目开发过程中,会包含开发环境,测试环境,生产环境,有可能会使用不同的数据源进行连接操作,
    在此配置文件中可以指定多个环境
    default:表示选择哪个环境作为运行时环境
    -->
    <environments default="development">
        <!--配置具体的环境属性
        id:表示当前环境的名称
        -->
        <environment id="development">
            <!--事务管理器,每一种数据源都需要配置具体的事务管理器
            type:表示事务管理器的类型
            jdbc:使用jdbc原生的事务控制
            managed:什么都没做
            -->
            <transactionManager type="JDBC"/>
            <!--配置具体的数据源的类型
            type:表示数据源的类型
            pooled:使用数据库连接池
            unpooled:每次都打开和关闭一个链接
            -->
            <dataSource type="POOLED">
                <!--链接数据的时候需要添加的必备的参数,一般是四个,如果是连接池的话,可以设置连接最大个数等相关信息-->
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
<!--提供了不同的数据库厂商的标识,当有数据库移植的需求的时候,可以根据不同的数据库来执行不同的sql语句
用来扩展数据库的移植性
-->
    <databaseIdProvider type="DB_VENDOR">
        <property name="MySQL" value="mysql"/>
        <property name="SQL Server" value="sqlserver"/>
        <property name="Oracle" value="oracle"/>
    </databaseIdProvider>
    <!--是来将mapper映射文件引入到配置文件中,方便程序启动的时候进行加载
    每次在进行填写的时候需要注意,写完xml映射之后一定要添加到mybatis-config文件中

    resource:从项目的类路径下加载对应的映射文件
    url:从本地磁盘目录或者网络中引入映射文件
    class:可以直接引入类的完全限定名,可以使用注解的方式进行使用,
            如果不想以注解的方式引入呢?
                如果想要class的方式引入配置文件,可以将xml文件添加到具体的类的同级目录下
              1、      如果是maven的项目的话,需要添加如下配置,因为maven默认只会编译java文件,需要把xml文件也添加到指定目录中
                    <build>
                        <resources>
                            <resource>
                                <directory>src/main/java</directory>
                                <includes>
                                    <include>**/*.xml</include>
                                </includes>
                            </resource>
                        </resources>
                    </build>
              2、在resource资源目录下,创建跟dao层一样的同级目录即可,将配置文件放到指定的目录
    -->
    <mappers>
<!--        <mapper resource="EmpDao.xml" />-->
<!--        <mapper resource="UserDao.xml"/>-->
<!--        <mapper class="com.mashibing.dao.UserDaoAnnotation"></mapper>-->
<!--        <mapper class="com.mashibing.dao.UserDao"></mapper>-->
        <!--如果需要引入多个配置文件,可以直接定义包的名称
        resource目录下配置的映射文件必须要具体相同的目录
        -->
        <package name="com.mashibing.dao"/>
    </mappers>
</configuration>
  • properties:引入外部的配置文件 类似于Spring中<context:property-placeholder location="classpath:xxxxxx"/>这个标签。 resource 指的是文件的相对路径(不明白什么是相对路径的自行百度)
  • settings: 设置,在这个标签里面可以设置很多东西,像我们常用的有开启驼峰命名、开启懒加载、开启缓存等。
<settings>
        <!--开启驼峰标识验证-->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
        <!--配置懒加载开关-->
        <setting name="lazyLoadingEnabled" value="true"/>
       <!--如果为true会加载全部查询内容,导致懒加载机制不生效-->
        <setting name="aggressiveLazyLoading" value="false"/>
       <!--开启缓存-->
        <setting name="cacheEnabled" value="true"/>
    </settings>
  • typeAliases:见名知意,这个就是起别名的意思。他表示在xxxxmapper.xml 文件中引入实体类名称的时候可以使用别名,不需要写完全限定名(完全限定名指的是:com.mashibing.bean.Emp 这种路径)
       <!--添加单独一个实体类的时候可以使用typeAlias-->
       <!--每一个具体的类都需要单独来写,如果有100个类呢?就可以使用package标签来指定包名-->
       <typeAlias type="com.mashibing.bean.Emp" alias="aaa"></typeAlias>
        <!--可以指定具体的包来保证实体类不需要写完全限定名-->
        <package name="com.mashibing.bean"/>
  • typeHandlers:类型处理器,我得理解就是将数据库中得类型转换成Java得数据类型(如果又不正确得地方可以在评论中指出),而mybatis中内置了很多种类型处理器,所以一般情况下就不需要自己来自定义类型处理器了。如需自定义内置处理器则需要extends BaseTypeHandler 继承这个类,来自定义。仅供参考:https://www.jianshu.com/p/482d2782c40b
  • ObjectFactory: 该标签是导入自定义得对象工程,当需要自定义对象工厂的时候实现此标签,完成结果集到java对象实例化的过程。平常几乎不用,如果需要对mybatis二次开发的话,可能会用到。
  • environments:该标签是对mybatis的环境的配置,default这个属性作用就是指定当前情况下使用哪个数据库配置,也就是使用哪个<environment>节点的配置,default的值就是配置的<environment>标签元素的id值。
<environments default="development">
        <!--配置具体的环境属性
        id:表示当前环境的名称
        -->
        <environment id="development">
            <!--事务管理器,每一种数据源都需要配置具体的事务管理器
            type:表示事务管理器的类型
            jdbc:使用jdbc原生的事务控制
            managed:什么都没做
            -->
            <transactionManager type="JDBC"/>
            <!--配置具体的数据源的类型
            type:表示数据源的类型
            pooled:使用数据库连接池
            unpooled:每次都打开和关闭一个链接
            -->
            <dataSource type="POOLED">
                <!--链接数据的时候需要添加的必备的参数,一般是四个,如果是连接池的话,可以设置连接最大个数等相关信息-->
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。