MyBatis配置文件中最常用的设置

2025-12-02 18:50

本文主要是介绍MyBatis配置文件中最常用的设置,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《MyBatis配置文件中最常用的设置》文章主要介绍了MyBatis配置的优化方法,包括引用外部的properties配置文件、配置外置以实现环境解耦、配置文件中最常用的6个核心设置以及三种常用的Ma...

MyBatis配置优化

mybatis的配置中引用外部的propertis配置文件

1. 创建外部配置文件

比如 db.properties

jdbc.driverChina编程=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mydb?useSSL=false
jdbc.username=root
jdbc.password=123456
2. 在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>
  <China编程!-- 引入外部 properties 文件 -->
  <properties resource="db.properties" />
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC"/>
      <datphpaSource 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>
    <mapper resource="mappers/UserMapper.xml"/>
  </mappers>
</configuration>

resource="db.properties" 表示从 classpath 根路径加载(如 src/main/resources/db.properties

⚠️ 注意事项

  1. 不要把密码明文写在代码里
    生产环境应使用配置中心(如 Apollo、Nacos)或 K8s Secret,而不是本地 .properties
    MyBatis 自动集成,无需手动配 mybatis-config.xml

记住:配置外置 = 环境解耦 = 上线不改代码 = DevOps 友好

xml文件标签的顺序

在 MyBatis 的 mybatis-config.xml(主配置文件)中,标签是有严格顺序要求的;而在 Mapper XML(如 UserMapper.xml)中,除了 <resultMap> 等定义类标签建议放前面外,SQL 标签(<select>、<insert> 等)本身没有顺序限制。

[!NOTE] 补充
很多主流框架的 XML 都有顺序要求,因为它们都基于 DTD 或 XSD 定义了严格的结构。如 Spring XML 配置(applicationContext.xml)—— 有顺序!

MyBatis 别名

两种用法:

  1. 单个注册(适合少量类)
   <typeAlias type="com.example.User" alias="User"/>
   ```
   → Mapper 中可用 `resultType="User"`
2android. **包扫描(推荐)**
```xml
   <package name="com.example.model"/>
   ```
   → 自动注册别名(默认类名首字母小写,如 `user`);加 `@Alias("User")` 可自定义。
✅ 作用:省去全限定类名,简化 Mapper XML。
### **最常用**的 Java 类型的**默认别名(type alias)**:
|别名(小写)|对应 Java 类型|
|---|---|
|`string`|`java.lang.String`|
|`int` / `_int`|`int`(基本类型)|
|`integer` / `_integer`|`java.lang.Integer`|
|`long` / `_long`|`long`|
|`double` / `_double`|`double`|
|`boolean` / `_boolean`|`boolean`|
|`map`|`java.util.HashMap`|
|`list`|`java.util.ArrayList`|
|`date`|`java.util.Date`|
|`object`|`java.lang.Object`|
> ✅ **带下划线(如 `_int`)表示基本类型,不带下划线(如 `int`)实际映射到包装类(`Integer`)** —— 这是 MyBwww.chinasem.cnatis 的约定。
### 示例:
```xml
<select id="getName" resultType="string">
 SELECT name FROM user WHERE id = #{id}
</select>
<select id="getIds" resultType="_int">
 SELECT id FROM user
</select>

记住:开发中优先用包装类别名(如 integer),避免基本类型 null 问题。这些别名全局可用,不用额外配置。

配置文件中最常用和最重要的设置

以下是必须掌握的 6 个核心配置(按优先级排序):

✅ 1.mapUnderscoreToCamelCase(强烈推荐开启)

<setting name="mapUnderscoreToCamelCase" value="true"/>
  • 作用:自动将数据库下划线字段(如 user_name)映射到 Java 驼峰属性(userName)。
  • 不设的后果:需手动写 <resultMap>,代码爆炸。

✅ 2.logImpl(开发必备)

<setting name="logImpl" value="SLF4J"/>
  • 作用:指定日志框架(SLF4J、LOG4J 等),方便查看 SQL 执行。
  • 不设的后果:看不到执行的 SQL,调试困难。

✅ 3.cacheEnabled(默认 true,通常不动)

<setting name="cacheEnabled" value="true"/>
  • 作用:开启二级缓存(Mapper 级别)。
  • 注意:生产环境慎用,容易因缓存不一致引发 Bug;多数团队用 Redis 替代。

✅ 4.lazyLoadingEnabled+aggressiveLazyLoading

<setting name="lazyLoadingEnabled" value="true"/>
<setting name="aggressiveLazyLoading" value="false"/>
  • 作用:开启懒加载(关联对象按需查询)。
  • aggressiveLazyLoading=false:只在访问具体属性时才加载(推荐)。

✅ 5.useGeneratedKeys(常在 XML 中局部设,全局也可)

<setting name="useGeneratedKeys" value="true"/>
  • 作用:插入后自动回填数据库自增主键(配合 keyProperty)。
  • 更常见做法:在 <insert> 标签里单独设置(更精准)。

✅ 6.defaultExecutorType(批量操作时注意)

<setting name="defaultExecutorType" value="REUSE"/> <!-- 或 BATCH -->
  • 默认是 SIMPLE
  • BATCH:用于大批量插入/更新(配合 SqlSession 手动提交)。

避坑建议:

  • 不要乱开二级缓存cacheEnabled 虽默认开,但实际常禁用)。
  • 务必开 mapUnderscoreToCamelCase —— 这是 MyBatis 最香的功能之一。
  • 日志实现(logImpl)要和项目日志体系一致(Spring Boot 默认集成好,可不设)。

极简推荐配置(90% 场景够用):

<settings>
  <setting name="mapUnderscoreToCamelCase" value="true"/>
  <setting name="logImpl" value="SLF4J"/>
</settings>

其他设置按需调整,**先掌握这两个。

Mapper(映射器)

三种常用方式,按推荐度排序如下:

✅ 方式一:通过 Mapper 接口注册(最推荐)

<mappers>
  <package name="com.example.mapper"/>
</mappers>
  • 要求:XML 文件名和接口名一致,且在同一包下(如 UserMapper.java + UserMapper.xml)。
  • 优点:批量注册,简洁;配合 Spring Boot 自动扫描更高效。
  • 适用:主流开发方式(接口 + XML)。

✅ 方式二:通过 XML 文件路径注册

<mappers>
  <mapper resource="mappers/UserMapper.xml"/>
</mappers>
  • 说明resource 从 classpath 根路径开始写。
  • 适用:纯 MyBatis 项目,或 XML 与接口不在同包时。

✅ 方式三:通过 Mapper 接口全限定类名注册(不推荐)

<mappers>
  <mapper class="com.example.mapper.UserMapper"/>
</mappers>
  • 要求:SQL 必须用 注解 写在接口里(如 @Select),不能搭配 XML(除非 XML 路径也正确且同名)。
  • 适用:简单 SQL 用注解的场景。

⚠️ 注意:

  • 式一(<package>)是大厂最常用,尤其配合 Maven/Gradle 标准目录结构。
  • 如果同时用 XML 和接口,必须保证命名和路径匹配,否则报错“找不到 mapper”。
  • Spring / Spring Boot 中,通常用 @MapperScan("com.example.mapper"),无需在 mybatis-config.xml 里配 <mappers>

一句话总结:

优先用 <package> 扫描接口包;纯 XML 用 resource;注解 Mapper 用 class

到此这篇关于MyBatis配置文件的文章就介绍到这了,更多相关mybatis配置文件内容请搜索编程China编程(www.chinasem.cn)以前的文章或继续浏览下面的相关文章希望大家以后多多支持China编程(www.chinasem.cn)!

这篇关于MyBatis配置文件中最常用的设置的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1156334

相关文章

idea设置快捷键风格方式

《idea设置快捷键风格方式》在IntelliJIDEA中设置快捷键风格,打开IDEA,进入设置页面,选择Keymap,从Keymaps下拉列表中选择或复制想要的快捷键风格,点击Apply和OK即可使... 目录idea设www.chinasem.cn置快捷键风格按照以下步骤进行总结idea设置快捷键pyth

MyBatis中的两种参数传递类型详解(示例代码)

《MyBatis中的两种参数传递类型详解(示例代码)》文章介绍了MyBatis中传递多个参数的两种方式,使用Map和使用@Param注解或封装POJO,Map方式适用于动态、不固定的参数,但可读性和安... 目录✅ android方式一:使用Map<String, Object>✅ 方式二:使用@Param

MyBatis-Plus使用动态表名分表查询的实现

《MyBatis-Plus使用动态表名分表查询的实现》本文主要介绍了MyBatis-Plus使用动态表名分表查询,主要是动态修改表名的几种常见场景,文中通过示例代码介绍的非常详细,对大家的学习或者工作... 目录1. 引入依赖2. myBATis-plus配置3. TenantContext 类:租户上下文

Spring Boot 集成 mybatis核心机制

《SpringBoot集成mybatis核心机制》这篇文章给大家介绍SpringBoot集成mybatis核心机制,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值... 目录Spring Boot浅析1.依赖管理(Starter POMs)2.自动配置(AutoConfigu

一文详解Java常用包有哪些

《一文详解Java常用包有哪些》包是Java语言提供的一种确保类名唯一性的机制,是类的一种组织和管理方式、是一组功能相似或相关的类或接口的集合,:本文主要介绍Java常用包有哪些的相关资料,需要的... 目录Java.langjava.utiljava.netjava.iojava.testjava.sql

Springmvc常用的注解代码示例

《Springmvc常用的注解代码示例》本文介绍了SpringMVC中常用的控制器和请求映射注解,包括@Controller、@RequestMapping等,以及请求参数绑定注解,如@Request... 目录一、控制器与请求映射注解二、请求参数绑定注解三、其他常用注解(扩展)四、注解使用注意事项一、控制

在SpringBoot+MyBatis项目中实现MySQL读写分离的实战指南

《在SpringBoot+MyBatis项目中实现MySQL读写分离的实战指南》在SpringBoot和MyBatis项目中实现MySQL读写分离,主要有两种思路:一种是在应用层通过代码和配置手动控制... 目录如何选择实现方案核心实现:应用层手动分离实施中的关键问题与解决方案总结在Spring Boot和

使用MyBatis TypeHandler实现数据加密与解密的具体方案

《使用MyBatisTypeHandler实现数据加密与解密的具体方案》在我们日常的开发工作中,经常会遇到一些敏感数据需要存储,比如用户的手机号、身份证号、银行卡号等,为了保障数据安全,我们通常会对... 目录1. 核心概念:什么是 TypeHandler?2. 实战场景3. 代码实现步骤步骤 1:定义 E

MyBatis中的大于等于、小于等于写法

《MyBatis中的大于等于、小于等于写法》MyBatisXML映射文件中处理大于等于和小于等于符号的两种方法:使用转义字符和CDATA块,转义字符更为常见,而CDATA块则提供了一种更易读的解决方案... 目录1. 使用转义字符(推荐)2. 使用 CDATA 块注意事项总结在 MyBATis 的 XML

前端Visual Studio Code安装配置教程之下载、汉化、常用组件及基本操作

《前端VisualStudioCode安装配置教程之下载、汉化、常用组件及基本操作》VisualStudioCode是微软推出的一个强大的代码编辑器,功能强大,操作简单便捷,还有着良好的用户界面,... 目录一、Visual Studio Code下载二、汉化三、常用组件1、Auto Rename Tag2