<?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>
    <!--
     | 属性定义配置
     |
     | 加载配置文件 resource="jdbc.properties"
     | 可以在本配置文件中使用 ${name} 来使用属性值
     | -->
    <!--
<properties resource="jdbc.properties">
     | 可通过以下方式定义属性, 加载配置文件中的属性会覆盖掉此处定义的同名属性
     | <property name="" value=""/>
</properties>
     | -->

    <!--
     | 全局配置设置
     |
     | 可配置选项                                        默认值, 描述
     |
     | aggressiveLazyLoading     true, 当设置为‘true’的时候，懒加载的对象可能被任何懒属性全部加载。否则，每个属性都按需加载。
     | multipleResultSetsEnabled true, 允许和不允许单条语句返回多个数据集（取决于驱动需求）
     | useColumnLabel            true, 使用列标签代替列名称。不同的驱动器有不同的作法。参考一下驱动器文档，或者用这两个不同的选项进行测试一下。
     | useGeneratedKeys          false, 允许JDBC 生成主键。需要驱动器支持。如果设为了true，这个设置将强制使用被生成的主键，有一些驱动器不兼容不过仍然可以执行。
     | autoMappingBehavior       PARTIAL, 指定MyBatis 是否并且如何来自动映射数据表字段与对象的属性。PARTIAL将只自动映射简单的，没有嵌套的结果。FULL 将自动映射所有复杂的结果。
     | defaultExecutorType       SIMPLE, 配置和设定执行器，SIMPLE 执行器执行其它语句。REUSE 执行器可能重复使用prepared statements 语句，BATCH执行器可以重复执行语句和批量更新。
     | defaultStatementTimeout   null, 设置一个时限，以决定让驱动器等待数据库回应的多长时间为超时
     | -->
    <settings>
        <!-- 这个配置使全局的映射器启用或禁用缓存 -->
        <setting name="cacheEnabled" value="true"/>
        <!-- 全局启用或禁用延迟加载。当禁用时，所有关联对象都会即时加载 -->
        <setting name="lazyLoadingEnabled" value="true"/>
        <!-- 是否开启驼峰命名策略，例如 user_nane 映射为 userName -->
        <setting name="mapUnderscoreToCamelCase" value="false"/>

    </settings>

    <!--
     | 别名定义
     |
    <typeAliases>
     	1、明确定义
        <typeAlias type="com.baomidou.mybatisplus.test.mysql.entity.User" alias="User" />

     	2、扫描指定包下的实体
        <package name="com.baomidou.mybatisplus.test.mysql.entity" />
    </typeAliases>
     | -->
    <typeAliases>
        <package name="com.baomidou.mybatisplus.test.mysql.entity"/>
    </typeAliases>

    <!-- 插件配置 -->
    <plugins>
        <!--
         | 分页插件配置
         | 插件提供二种方言选择：1、默认方言 2、自定义方言实现类，两者均未配置则抛出异常！
         | dialectType 数据库方言
         |             默认支持  mysql  oracle  hsql  sqlite  postgre  sqlserver
         | dialectClazz 方言实现类
         |              自定义需要实现 com.baomidou.mybatisplus.plugins.pagination.IDialect 接口
         | -->
        <plugin interceptor="com.baomidou.mybatisplus.plugins.PaginationInterceptor"/>
        <!-- SQL 执行性能分析，开发环境使用，线上不推荐。 maxTime 指的是 sql 最大执行时长-->
        <plugin interceptor="com.baomidou.mybatisplus.plugins.PerformanceInterceptor">
            <property name="maxTime" value="5000"/>
        </plugin>
        <!-- SQL 执行分析拦截器 stopProceed 发现全表执行 delete update 是否停止运行 -->
        <plugin interceptor="com.baomidou.mybatisplus.plugins.SqlExplainInterceptor">
            <property name="stopProceed" value="false"/>
        </plugin>
    </plugins>

    <!-- 环境配置 -->
    <environments default="development">
        <environment id="development">
            <!-- 使用 JDBC 管理事务 -->
            <transactionManager type="JDBC"/>
            <!-- 数据库连接池 -->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis-plus?useUnicode=true&amp;characterEncoding=UTF-8"/>
                <property name="username" value="root"/>
                <property name="password" value="521"/>
                <property name="poolMaximumActiveConnections" value="100"/>
                <property name="poolMaximumIdleConnections" value="20"/>
                <!--
                    <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映射定义Mappers
     |
     | resource 指定在classpath中的mapper文件。
     | url      通过完全文件系统路径或者web URL地址来指向mapper文件
     | class    指向一个mapper接口
     | package  指向可以找到Mapper接口的包名
     | -->
    <mappers>
        <mapper resource="mysql/RoleMapper.xml"/>
        <mapper class="com.baomidou.mybatisplus.test.mysql.mapper.UserMapper"/>
        <mapper class="com.baomidou.mybatisplus.test.mysql.mapper.NotPKMapper"/>
        <mapper resource="mysql/UserMapper.xml"/>
        <mapper class="com.baomidou.mybatisplus.test.mysql.mapper.RoleMapper"/>
        <mapper class="com.baomidou.mybatisplus.test.mysql.mapper.TestMapper"/>
    </mappers>
</configuration>
