• Mybatis学习(3)关于mybatis全局配置文件SqlMapConfig.xml


    比如针对我这个项目的mybatis全局配置文件SqlMapConfig.xml做一些说明:

    <?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="db.properties">
            <!--properties中还可以配置一些属性名和属性值  -->
            <!-- <property name="jdbc.driver" value=""/> -->
        </properties>
        
        <!-- 全局配置参数,需要时再设置 -->
        <!-- <settings></settings> -->
        
        <!-- 别名 -->
        <typeAliases>
            <!-- 针对单个别名定义 type:类型的路径 alias:别名  -->
            <!-- <typeAlias type="com.cy.po.User" alias="user"/> -->
            
            <!-- 批量别名定义  指定包名,mybatis自动扫描包中的po类,自动定义别名,别名就是类名(首字母大写或小写都可以)-->
            <package name="com.cy.po"/>
        </typeAliases>
        
        <!-- 和spring整合后 environments配置将废除-->
        <environments default="development">
            <environment id="development">
            <!-- 使用jdbc事务管理,事务控制由mybatis-->
                <transactionManager type="JDBC" />
            <!-- 数据库连接池,由mybatis管理-->
                <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>    
        
        <!-- 加载 映射文件 -->
        <mappers>
            <!--通过resource方法一次加载一个映射文件 -->
            <!-- <mapper resource="mapper/UserMapper.xml"/> -->
            
            <!-- 通过mapper接口加载单个 映射文件
            遵循一些规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录 中
            上边规范的前提是:使用的是mapper代理方法
             -->
            <!-- <mapper class="com.cy.mapper.UserMapper"/> -->
            
            <!-- 批量加载mapper
            指定mapper接口的包名,mybatis自动扫描包下边所有mapper接口进行加载
            遵循一些规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录 中
            上边规范的前提是:使用的是mapper代理方法
             -->
            <package name="com.cy.mapper"/>
        </mappers>
    </configuration>

    一、properties属性:

    将数据库连接参数单独配置在db.properties中,只需要在SqlMapConfig.xml中加载db.properties的属性值。在SqlMapConfig.xml中就不需要对数据库连接参数硬编码。

    将数据库连接参数只配置在db.properties中,原因:方便对参数进行统一管理,其它xml可以引用该db.properties。

    注意点:

    MyBatis 将按照下面的顺序来加载属性:

    1)在 properties 元素体内定义的属性首先被读取。

    2)然后会读取properties 元素中resource或 url 加载的属性,它会覆盖已读取的同名属性。

    3)最后读取parameterType传递的属性,它会覆盖已读取的同名属性。

    建议:

      不要在properties元素体内添加任何属性值,只将属性值定义在properties文件中。

      在properties文件中定义属性名要有一定的特殊性,如:XXXXX.XXXXX.XXXX

    二、settings全局配置参数:

    mybatis框架在运行时可以调整一些运行参数。比如:开启二级缓存、开启延迟加载。

    全局参数将会影响mybatis的运行行为。

    资料参见下图:

    三、typeAliases别名:

    在mapper.xml中,定义很多的statement,statement需要parameterType指定输入参数的类型、需要resultType指定输出结果的映射类型。

    mybatis默认对一些java类型(如:String/byte/long/short/double/Integer/Double/Boolean/boolean/Date/BigDecimal)定义了别名;

    我们可以对一些自定义的pojo类型进行别名定义:

    1)针对单个别名定义

    2)批量别名定义

    四、typeHandlers类型处理器:

    mybatis中通过typeHandlers完成jdbc类型和java类型的转换。

    通常情况下,mybatis提供的类型处理器满足日常需要,不需要自定义.

    mybatis默认支持了很多类型处理器:

    如:BooleanTypeHandler 、ByteTypeHandler 、BigDecimalTypeHandler 、StringTypeHandler 、DateTypeHandler 、DateOnlyTypeHandler 、TimeOnlyTypeHandler 、SqlTimestampTypeHandler 、SqlDateTypeHandler EnumTypeHandler 等等;

    五、mappers映射配置:

    1)通过resource加载单个映射文件

    2)通过mapper接口加载单个mapper

    3)批量加载mapper(推荐使用)

    配置方法见上面的配置文件。

  • 相关阅读:
    LeetCode分类专题(五)——动态规划1-子序列
    LeetCode分类专题(四)——双指针和滑动窗口1
    LeetCode分类专题(三)——二分查找1
    消息队列(一)——Kafka概述
    Java多线程(五)——synchronized关键字原理
    Java多线程(四)——volatile关键字原理
    Redis(五)——主从复制、哨兵
    Redis(四)——过期、持久化、事件
    Redis(三)——底层数据结构
    MySQL知识点
  • 原文地址:https://www.cnblogs.com/tenWood/p/6280503.html
Copyright © 2020-2023  润新知