spring-config.md 6.34 KB

Spring 配置 Mybatis-Plus

依赖包

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus</artifactId>
    <version>最新版本 Maven 为准</version>
</dependency>

spring 配置

<!-- MyBatis SqlSessionFactoryBean 配置 -->
<bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="configLocation" value="classpath:xml/mybatis-config.xml" />
    <property name="typeAliasesPackage" value="xxx.entity" />
    <property name="mapperLocations" value="classpath:com/xx/mapper/xml/*Mapper.xml" />
    <property name="plugins">
        <array>
            <!-- 分页插件配置 -->
            <bean id="paginationInterceptor" class="com.baomidou.mybatisplus.plugins.PaginationInterceptor">
                <property name="dialectType" value="mysql" />
            </bean>
        </array>
    </property>
    <!-- oracle 添加
    <property name="dbType" value="oracle" />
    -->
    <!-- 全局表为下划线命名设置 true
    <property name="dbColumnUnderline" value="true" />
    -->
    <!-- 全局字段验证 0、ignored  1、not null 2、not empty
    <property name="fieldStrategy" value="2" />
    -->
</bean>

<!-- 加载 mapper.xml 接口 配置文件 -->
<bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="xxx.mapper" />
</bean>

开启动态加载 mapper

    参数说明:
        sqlSessionFactory:session工厂
        mapperLocations:mapper匹配路径
        enabled:是否开启动态加载  默认:false
        delaySeconds:项目启动延迟加载时间  单位:秒  默认:10s
        sleepSeconds:刷新时间间隔  单位:秒 默认:20s
    提供了两个构造,挑选一个配置进入spring配置文件即可:

    构造1:
        <bean class="com.baomidou.mybatisplus.spring.MybatisMapperRefresh">
            <constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"/>
            <constructor-arg name="mapperLocations" value="classpath*:mybatis/mappers/*/*.xml"/>
            <constructor-arg name="enabled" value="true"/>
        </bean>

    构造2:
        <bean class="com.baomidou.mybatisplus.spring.MybatisMapperRefresh">
            <constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"/>
            <constructor-arg name="mapperLocations" value="classpath*:mybatis/mappers/*/*.xml"/>
            <constructor-arg name="delaySeconds" value="10"/>
            <constructor-arg name="sleepSeconds" value="20"/>
            <constructor-arg name="enabled" value="true"/>
        </bean>

mybatis-config.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>
    <!-- 
     | 全局配置设置
     |
     | 可配置选项                                        默认值, 描述
     |
     | 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" />
        <setting name="multipleResultSetsEnabled" value="true" />
        <setting name="useColumnLabel" value="true" />
        <setting name="defaultExecutorType" value="REUSE" />
        <setting name="defaultStatementTimeout" value="25000" />
    </settings>
    <!-- 查询对象别名配置 -->
    <typeAliases>
        <!-- 
        <typeAlias alias="taskVo" type="xxx.vo.TaskVo" />
         -->
    </typeAliases>
    <!-- 插件配置, spring 中配置,此处就可以不用配置。 -->
    <!-- 
    <plugins>
         | 分页插件配置 
         | 插件提供二种方言选择:1、默认方言 2、自定义方言实现类,两者均未配置则抛出异常!
         | dialectType 数据库方言  
         |             默认支持  mysql  oracle  hsql  sqlite  postgre  sqlserver
         | dialectClazz 方言实现类
         |              自定义需要实现 com.baomidou.mybatisplus.plugins.pagination.IDialect 接口
        1、 配置方式一、使用 MybatisPlus 提供方言实现类
        <plugin interceptor="com.baomidou.mybatisplus.plugins.PaginationInterceptor">
            <property name="dialectType" value="mysql" />
        </plugin>
        2、配置方式二、使用自定义方言实现类 
        <plugin interceptor="com.baomidou.mybatisplus.plugins.PaginationInterceptor">
            <property name="dialectClazz" value="xxx.dialect.XXDialect" />
        </plugin>
        <!-- SQL 执行性能分析,开发环境使用,线上不推荐。 maxTime 指的是 sql 最大执行时长 -->
        <plugin interceptor="com.baomidou.mybatisplus.plugins.PerformanceInterceptor">
            <property name="maxTime" value="100" />
        </plugin>
        <!-- SQL 执行分析拦截器 stopProceed 发现全表执行 delete update 是否停止运行 -->
        <plugin interceptor="com.baomidou.mybatisplus.plugins.SqlExplainInterceptor">
            <property name="stopProceed" value="false" />
        </plugin>
    </plugins>
    | -->
</configuration>