mybatis主配置文件详解(Mybatis系列-3-主配置文件介绍)

mybatis主配置文件详解?今天的付出,一定会换来明天的幸福,接下来我们就来聊聊关于mybatis主配置文件详解?以下内容大家不妨参考一二希望能帮到您!

mybatis主配置文件详解

今天的付出,一定会换来明天的幸福。

Mybatis相关源码及文档:

Mybatis官方技术文档 http://mybatis.org/mybatis-3/zh/index.html
Mybatis源码包下载:http://github.com/mybatis/mybatis-3/releases
所有代码及笔记gitee路径:http://gitee.com/simple-coding/all-demo-code.git

要想进行MyBatis开发,Mybatis运行环境是必不可少的,那就需要配置Mybatis的主配置文件,其配置如下:

configuration(配置)

  • properties(属性)

  • settings(设置)

  • typeAliases(类型别名)

  • typeHandlers(类型处理器)

  • objectFactory(对象工厂)

  • plugins(插件)

  • environments(环境配置)

  • environment(环境变量)

  • transactionManager(事务管理器)

  • dataSource(数据源)

  • databaseIdProvider(数据库厂商标识)

  • mappers(映射器)

    下面我们列举下最常用的配置。其他配置可以参考官网文档。

    1.属性(properties)

    properties属性我们常用来引入数据库的连接配置信息。

    <properties resource="jdbc.properties"/>

    2.设置(settings)

    设置(settings)是Mybatis运行环境的全局常量配置。如我们前面日志讲解部分,指定特定日志实现

    <setting name="logImpl" value="STDOUT_LOGGING"/>

    或者配置是否开启驼峰命名自动映射。

    <setting name="mapUnderscoreToCamelCase" value="true"/>

    3.类型别名(typeAliases)

    类型别名可为 Java 类型设置一个缩写名字。 它仅用于 XML 配置,意在降低冗余的全限定类名书写。比如mapper配置传参就可以使用定义好的别名。

    <typeAliases>
    <!---包中的所有类的简单类名指定为别名-->
    <package name="com.mybatis.abc.mybatis.bean"/>
    <!-- 对实体类逐一定义
    <typeAlias type="com.mybatis.abc.mybatis.bean.Student" alias="Student"/>
    -->
    </typeAliases>

    4.environments(环境配置)

  • environments标签:defalult属性指定当前的运行环境。

    environment的id属性为当前定义的运行环境

    <!--使用id为myDeveloper的运行环境-->
    <environments default="myDeveloper">
    <environment id="myDeveloper">
    </environment>
    <environment id="myDeveloper1">
    </environment>
    <environment id="myDeveloper2">
    </environment>
    </environments>

  • transactionManager标签

    <!-- 配置数据库的事务 - type:指定事务的类型
    JDBC:表示使用数据库连接的事务管理(rollback, commit),
    默认情况下Mybatis的提交为手动提交;
    MANAGED:表示事务是由容器管理的(spring是容器,能够管理事务)。 -->
    <transactionManager type="JDBC" />

  • dataSource标签

    <!-- 配置数据源 - type:数据源的类型
    POOLED:表示连接池
    UNPOOLED:不使用连接池,每次的数据库的操作是新建连接,使用后关闭连接
    JNDI:java 命名和目录服务。 表示外部的连接池。-->
    <dataSource type="POOLED">
    <property name="driver" value="com.mysql.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://127.0.0.1:3366/test"/>
    <property name="username" value="root"/>
    <property name="password" value="root"/>
    </dataSource>

    注:如果引入了DB属性配置文件,此处value的值也可以写成${属性文件中的key值}

    5.mappers(映射器)第一种:<mapper resource="XXX"/>

  • 需要对实体类逐一映射

    <mappers>
    <mapper resource="com/mybatis/abc/mybatis/dao/studentMapper.xml"/>
    <mapper resource="com/mybatis/abc/mybatis/dao/studentMapper2.xml"/>
    </mappers>

    第二种:<mapper url="XXX"/>

    1. 从本地磁盘加载映射文件;

      需要对实体类逐一映射

    <mappers>
    <mapper url="file:///D:\studentMapper.xml"/>
    </mappers>

    第三种:<mapper class="XXX"/>

    使用规范:

    1. mapper位置:DAO接口与映射文件在同一路径下。

    2. mapper命名:接口名与映射文件名相同。

    3. mapper的命名空间:映射文件命名空间为接口全类名的情况.

    <mappers>
    <!--一个mapper对应一个配置,多个mapper需要逐一配置-->
    <mapper class="com.mybatis.abc.mybatis.dao.StudentDao"/>
    </mappers>

    例如mapper配置文件:StudentDao.xml中的namespace命名:

    <mapper namespace="com.mybatis.abc.mybatis.dao.StudentDao">
    <insert id="saveStudent" >
    insert into student(sname,sno) values(#{sname},#{sno})
    </insert>
    /mapper>

    第四种:<package name="XXX"/>

    name指定的是包名。使用规范如下

    1. mapper适用范围:可用于mapper的动态代理(后面单独讲)

    2. mapper位置:DAO接口与映射文件在同一路径下。

    3. mapper命名:接口名与映射文件名相同。

    4. mapper命名空间:映射文件命名空间(namespace)为接口全类名的情况.

    <mappers>
    <package name="com.mybatis.abc.mybatis.dao"/>
    </mappers>

    看了上边的mapper的配置,你是否会有疑问:在与spring或者springboot整合中,也没见到mapper.xml必须放在与Dao同名的包中啊?这是怎么回事呢?其实这是中间包整合封装的结果,不妨你去看一下mybatis-spring整合时是怎么加载配置文件的。

  • © 版权声明
    THE END
    喜欢就支持一下吧
    分享