MyBatis2-全局配置文件

本文详细介绍了MyBatis全局配置文件的各项元素及其用途,包括属性(properties)、设置(settings)、类型别名(typeAliases)等,并提供了环境配置(environments)、数据库厂商标识(databaseIdProvider)及映射器(mappers)的具体配置示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

二.全局配置文件

MyBatis 的配置文件包含了影响 MyBatis 行为甚深的
设置(settings)和属性(properties)信息。文档的
顶层结构如下:

• configuration 配置
    • properties 属性
    • settings 设置
    • typeAliases 类型命名
    • typeHandlers 类型处理器
    • objectFactory 对象工厂
    • plugins 插件
    • environments 环境
        • environment 环境变量
            • transactionManager 事务管理器
            • dataSource 数据源
    • databaseIdProvider 数据库厂商标识
    • mappers 映射器
2.1 properties
<!--mybatis可以使用properties来引入外部properties配置文件的内容
    resource:引入类路径下资源           
     url:引入网络路径下的资源-->
<properties resource="dbconfig.properties"/>

<!--dbconfig.properties:-->

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis1
jdbc.username=root
jdbc.password=123456

<!--数据库搭载:-->

<dataSource type="POOLED">
    <!--导入了properties后可以直接使用内部配置内容-->
    <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>
2.2 settings
<!--
    settings包含很多重要的设置项
        settings:用来设置每一个设置项
            name:设置项名
            value:设置项取值
-->

[settings中各属性详解](https://blog.youkuaiyun.com/u014231523/article/details/53056032)

<!--例:设置驼峰命名法-->
<settings>
    <setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
2.3 typeAliases
<typeAliases>
        <!--
        typeAliases:别名处理器,可以为java类型起别名
            注意:别名不区分大小写
            typeAlias:为某个类单独起别名
                type:指定要起别名的类型全类名,默认别名就是类名小写:employee
                alias:指定新的别名
            package:为某个包下的所有类批量起别名
                name:指定包名(为当前包以及下面所有的后代包的每一个类都起一个默认别名(类名小写))
            @Alias:批量起别名的情况下,在类前加@Alias标签,标签内的值,为其新的别名

            建议:还是使用全类名,这样不易混淆,并且利用ctrl加左键可以直接进入bean
        -->
        <!--<typeAlias type="com.itlc.mybatis.HelloWorld.New.bean.Employee" alias="emp"/>-->
        <package name="com.itlc.mybatis.HelloWorld.New.bean"/>
    </typeAliases>
2.4 environments
<!--
        environments:环境,mybatis可以配置多种环境,default指定使用某种环境。可以快速切换环境
            environment:对应一个具体的环境信息
                必须有transactionManager:事务管理器
                    type:事务管理器类型(别名);JDBC(JdbcTransactionFactory)\MANAGED(ManagedTransactionFactory)
                        自定义事务管理器:实现TransactionFactory接口。type指定为全类名
                必须有dataSource:
                    type:数据源类型(别名);UNPOOLED(UnpooledDatasourceFactory)
                                            \POOLED(PooledDatasourceFactory)
                                            \JNDI(JndiDatasourceFactory)
                    自定义数据源:实现DatasourceFactory接口。type指定为全类名

    -->
    <environments default="development">
        <environment id="test">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED"/>
        </environment>

        <environment id="development">
            <transactionManager type="JDBC" />
            <dataSource type="POOLED">
                <!--导入了properties后可以直接使用内部配置内容-->
                <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>
2.5 databaseIdProvider
<!--
        databaseIdProvider:支持多数据库厂商
        type="DB_VENDOR"(别名):VendorDatabaseIdProVider
            作用就是得到数据厂商的标识,mybatis就能根据数据库厂商标识(驱动getDatabaseProductName())
            mybatis就能根据数据库厂商标识来执行不同的sql。标识:MySQL,Oracle,SQL Server,xxxx
    -->
    <databaseIdProvider type="DB_VENDOR">
        <!--为不同的数据库厂商起别名-->
        <property name="MySQL" value="mysql"/>
        <property name="Oracle" value="oracle"/>
        <property name="SQL Server" value="sqlserver"/>
    </databaseIdProvider>
    <!--
        在mapper中利用databaseId指定数据库类型即可,例:
            <select id="getEmpById" resultType="Emp" databaseId="mysql">
                Select * FROM tbl_employee WHERE id=#{id}
            </select>
    -->
2.6 mappers
    <!-- 将我们写好的sql映射文件(EmployeeMapper.xml)一定要注册到全局配置文件(mybatis-config.xml)中 -->
    <!--6.mappers:将sql映射注册到全局配置中-->
    <mappers>
        <!--
        mapper:注册一个sql映射
            resource:引用类路径下的sql映射文件
            url:引用网络路径或者磁盘路径下的sql映射文件
            class:引用(注册)接口
                1.有sql映射文件,映射文件名和接口同名,并且放在与接口同一目录下
                2.没有sql映射文件,所有的sql都是利用注解写在接口上
                推荐:
                    比较重要的:复杂的Dao接口我们来写sql映射文件
                    不重要,简单的Dao接口为了开发快速可以使用注解
        -->
        <mapper class="com.itlc.mybatis.HelloWorld.New.dao.testEmployeeMapper"/>
        <mapper resource="EmployeeMapper.xml" />
        <!--批量注册:-->
        <package name="com.itlc.mybatis.HelloWorld.New.dao"/>
    </mappers>
### Spring Boot 整合 MyBatis-Plus 全局配置错误解决方案 在 Spring Boot 中整合 MyBatis-Plus 时,如果遇到全局配置相关的错误,通常可能是由于以下几个原因引起的: #### 1. **未正确引入依赖** 确保项目中的 `pom.xml` 文件已正确引入 MyBatis-Plus 的相关依赖。缺少必要的依赖可能导致全局配置无法生效。 ```xml <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.3.1</version> </dependency> ``` 上述代码展示了如何在 Maven 项目中引入 MyBatis-Plus 的核心依赖[^4]。 --- #### 2. **全局配置文件设置不完整** MyBatis-Plus 支持通过 `application.yml` 或 `application.properties` 配置全局参数。如果这些参数缺失或配置不当,则可能引发异常行为。 以下是一个典型的 `application.yml` 配置示例: ```yaml spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC username: root password: 123456 mybatis-plus: global-config: db-config: id-type: auto # 设置主键策略为自增 logic-delete-value: 1 # 逻辑删除字段值,默认删除状态 logic-not-delete-value: 0 # 默认正常状态 configuration: map-underscore-to-camel-case: true # 开启下划线转驼峰命名 ``` 以上配置定义了数据源以及 MyBatis-Plus 的全局属性,例如主键生成策略、逻辑删除支持等。 --- #### 3. **Mapper 接口扫描路径问题** 如果 Mapper 接口所在的包路径未被正确扫描到,可能会导致 SQL 执行失败或其他运行时异常。可以通过在启动类上添加 `@MapperScan` 注解指定 Mapper 接口所在位置。 ```java package com.sakura.mybatisplus; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication @MapperScan("com.sakura.mybatisplus.generator.mapper") public class MybatisplusApplication { public static void main(String[] args) { SpringApplication.run(MybatisplusApplication.class, args); } } ``` 此代码片段显示了如何使用 `@MapperScan` 来声明 Mapper 接口的位置[^3]。 --- #### 4. **数据库连接池配置冲突** 当应用尝试连接多个不同的数据库实例时,可能出现连接池配置冲突的情况。这会导致初始化阶段抛出异常。因此,在单个项目中应确保只针对单一数据库进行配置,或者明确区分不同数据源的上下文环境。 --- #### 5. **插件注册遗漏** 某些情况下,开发者需要手动注册 MyBatis-Plus 提供的各种插件(如分页插件)。如果没有完成这一操作,部分功能将不可用。 下面是如何在 Spring Boot 应用程序中注册分页插件的一个例子: ```java import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class MyBatisPlusConfig { @Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); interceptor.addInnerInterceptor(new PaginationInnerInterceptor()); return interceptor; } } ``` 这段代码实现了对分页插件的支持。 --- #### 总结 综合来看,Spring Boot 和 MyBatis-Plus 的集成过程中常见的全局配置错误主要包括依赖管理不足、配置项缺失、Mapper 路径设定失误等方面。逐一排查这些问题可以有效解决问题并提升系统的稳定性性能。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值