最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MyBatis配置文件中最常用的設(shè)置

 更新時(shí)間:2025年12月02日 11:54:41   作者:SadSunset  
文章主要介紹了MyBatis配置的優(yōu)化方法,包括引用外部的properties配置文件、配置外置以實(shí)現(xiàn)環(huán)境解耦、配置文件中最常用的6個(gè)核心設(shè)置以及三種常用的Mapper注冊(cè)方式,感興趣的朋友跟隨小編一起看看吧

MyBatis配置優(yōu)化

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

1. 創(chuàng)建外部配置文件

比如 db.properties

jdbc.driver=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>
  <!-- 引入外部 properties 文件 -->
  <properties resource="db.properties" />
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC"/>
      <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>
    <mapper resource="mappers/UserMapper.xml"/>
  </mappers>
</configuration>

? resource="db.properties" 表示從 classpath 根路徑加載(如 src/main/resources/db.properties

?? 注意事項(xiàng)

  1. 不要把密碼明文寫在代碼里
    生產(chǎn)環(huán)境應(yīng)使用配置中心(如 Apollo、Nacos)或 K8s Secret,而不是本地 .properties。
    MyBatis 自動(dòng)集成,無需手動(dòng)配 mybatis-config.xml。

?? 記?。号渲猛庵?= 環(huán)境解耦 = 上線不改代碼 = DevOps 友好

xml文件標(biāo)簽的順序

在 MyBatis 的 mybatis-config.xml(主配置文件)中,標(biāo)簽是有嚴(yán)格順序要求的;而在 Mapper XML(如 UserMapper.xml)中,除了 <resultMap> 等定義類標(biāo)簽建議放前面外,SQL 標(biāo)簽(<select>、<insert> 等)本身沒有順序限制。

[!NOTE] 補(bǔ)充
很多主流框架的 XML 都有順序要求,因?yàn)樗鼈兌蓟?DTD 或 XSD 定義了嚴(yán)格的結(jié)構(gòu)。如 Spring XML 配置(applicationContext.xml)—— 有順序!

MyBatis 別名

兩種用法:

  1. 單個(gè)注冊(cè)(適合少量類)
   <typeAlias type="com.example.User" alias="User"/>
   ```
   → Mapper 中可用 `resultType="User"`
2. **包掃描(推薦)**
```xml
   <package name="com.example.model"/>
   ```
   → 自動(dòng)注冊(cè)別名(默認(rèn)類名首字母小寫,如 `user`);加 `@Alias("User")` 可自定義。
? 作用:省去全限定類名,簡(jiǎn)化 Mapper XML。
### **最常用**的 Java 類型的**默認(rèn)別名(type alias)**:
|別名(小寫)|對(duì)應(yīng) 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`)實(shí)際映射到包裝類(`Integer`)** —— 這是 MyBatis 的約定。
### 示例:
```xml
<select id="getName" resultType="string">
 SELECT name FROM user WHERE id = #{id}
</select>
<select id="getIds" resultType="_int">
 SELECT id FROM user
</select>

?? 記住:開發(fā)中優(yōu)先用包裝類別名(如 integer),避免基本類型 null 問題。這些別名全局可用,不用額外配置。

配置文件中最常用和最重要的設(shè)置

以下是必須掌握的 6 個(gè)核心配置(按優(yōu)先級(jí)排序):

? 1.mapUnderscoreToCamelCase(強(qiáng)烈推薦開啟)

<setting name="mapUnderscoreToCamelCase" value="true"/>
  • 作用:自動(dòng)將數(shù)據(jù)庫(kù)下劃線字段(如 user_name)映射到 Java 駝峰屬性(userName)。
  • 不設(shè)的后果:需手動(dòng)寫 <resultMap>,代碼爆炸。

? 2.logImpl(開發(fā)必備)

<setting name="logImpl" value="SLF4J"/>
  • 作用:指定日志框架(SLF4J、LOG4J 等),方便查看 SQL 執(zhí)行。
  • 不設(shè)的后果:看不到執(zhí)行的 SQL,調(diào)試?yán)щy。

? 3.cacheEnabled(默認(rèn) true,通常不動(dòng))

<setting name="cacheEnabled" value="true"/>
  • 作用:開啟二級(jí)緩存(Mapper 級(jí)別)。
  • 注意:生產(chǎn)環(huán)境慎用,容易因緩存不一致引發(fā) Bug;多數(shù)團(tuán)隊(duì)用 Redis 替代。

? 4.lazyLoadingEnabled+aggressiveLazyLoading

<setting name="lazyLoadingEnabled" value="true"/>
<setting name="aggressiveLazyLoading" value="false"/>
  • 作用:開啟懶加載(關(guān)聯(lián)對(duì)象按需查詢)。
  • aggressiveLazyLoading=false:只在訪問具體屬性時(shí)才加載(推薦)。

? 5.useGeneratedKeys(常在 XML 中局部設(shè),全局也可)

<setting name="useGeneratedKeys" value="true"/>
  • 作用:插入后自動(dòng)回填數(shù)據(jù)庫(kù)自增主鍵(配合 keyProperty)。
  • 更常見做法:在 <insert> 標(biāo)簽里單獨(dú)設(shè)置(更精準(zhǔn))。

? 6.defaultExecutorType(批量操作時(shí)注意)

<setting name="defaultExecutorType" value="REUSE"/> <!-- 或 BATCH -->
  • 默認(rèn)是 SIMPLE
  • BATCH:用于大批量插入/更新(配合 SqlSession 手動(dòng)提交)。

?? 避坑建議:

  • 不要亂開二級(jí)緩存cacheEnabled 雖默認(rèn)開,但實(shí)際常禁用)。
  • 務(wù)必開 mapUnderscoreToCamelCase —— 這是 MyBatis 最香的功能之一。
  • 日志實(shí)現(xiàn)(logImpl)要和項(xiàng)目日志體系一致(Spring Boot 默認(rèn)集成好,可不設(shè))。

?? 極簡(jiǎn)推薦配置(90% 場(chǎng)景夠用):

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

其他設(shè)置按需調(diào)整,**先掌握這兩個(gè)。

Mapper(映射器)

三種常用方式,按推薦度排序如下:

? 方式一:通過 Mapper 接口注冊(cè)(最推薦)

<mappers>
  <package name="com.example.mapper"/>
</mappers>
  • 要求:XML 文件名和接口名一致,且在同一包下(如 UserMapper.java + UserMapper.xml)。
  • 優(yōu)點(diǎn):批量注冊(cè),簡(jiǎn)潔;配合 Spring Boot 自動(dòng)掃描更高效。
  • 適用:主流開發(fā)方式(接口 + XML)。

? 方式二:通過 XML 文件路徑注冊(cè)

<mappers>
  <mapper resource="mappers/UserMapper.xml"/>
</mappers>
  • 說明resource 從 classpath 根路徑開始寫。
  • 適用:純 MyBatis 項(xiàng)目,或 XML 與接口不在同包時(shí)。

? 方式三:通過 Mapper 接口全限定類名注冊(cè)(不推薦)

<mappers>
  <mapper class="com.example.mapper.UserMapper"/>
</mappers>
  • 要求:SQL 必須用 注解 寫在接口里(如 @Select),不能搭配 XML(除非 XML 路徑也正確且同名)。
  • 適用:簡(jiǎn)單 SQL 用注解的場(chǎng)景。

?? 注意:

  • 式一(<package>)是大廠最常用,尤其配合 Maven/Gradle 標(biāo)準(zhǔn)目錄結(jié)構(gòu)。
  • 如果同時(shí)用 XML 和接口,必須保證命名和路徑匹配,否則報(bào)錯(cuò)“找不到 mapper”。
  • Spring / Spring Boot 中,通常用 @MapperScan("com.example.mapper"),無需在 mybatis-config.xml 里配 <mappers>。

?? 一句話總結(jié):

優(yōu)先用 <package> 掃描接口包;純 XML 用 resource;注解 Mapper 用 class。

到此這篇關(guān)于MyBatis配置文件的文章就介紹到這了,更多相關(guān)mybatis配置文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java使用ReentrantLock進(jìn)行加解鎖的示例代碼

    Java使用ReentrantLock進(jìn)行加解鎖的示例代碼

    在多線程編程中,為了確保多個(gè)線程在訪問共享資源時(shí)不會(huì)發(fā)生沖突,我們通常需要使用 鎖 來同步對(duì)資源的訪問,本文將深入探討如何優(yōu)雅地使用 ReentrantLock,避免常見的坑點(diǎn),并提升代碼的可維護(hù)性,需要的朋友可以參考下
    2025-04-04
  • SpringSecurity身份驗(yàn)證實(shí)現(xiàn)完整指南

    SpringSecurity身份驗(yàn)證實(shí)現(xiàn)完整指南

    本文介紹了如何使用SpringSecurity實(shí)現(xiàn)基于表單的登錄認(rèn)證,包括配置SecurityConfig、自定義登錄頁(yè)面、處理認(rèn)證成功和失敗的場(chǎng)景、獲取當(dāng)前登錄用戶、實(shí)現(xiàn)登出功能,幫助開發(fā)者理解和應(yīng)用SpringSecurity的核心功能和最佳實(shí)踐,感興趣的朋友跟隨小編一起看看吧
    2025-12-12
  • RabbitMQ開啟SSL與SpringBoot連接測(cè)試的配置方法

    RabbitMQ開啟SSL與SpringBoot連接測(cè)試的配置方法

    本文基于 CentOS 7 + Git + OpenSSL + yum 安裝的 RabbitMQ,需要讀者提交安裝好。其他方式也可變通參考本文。對(duì)RabbitMQ開啟SSL與SpringBoot連接測(cè)試相關(guān)知識(shí)感興趣的朋友一起看看吧
    2022-01-01
  • mybatis spring配置SqlSessionTemplate的使用方式

    mybatis spring配置SqlSessionTemplate的使用方式

    這篇文章主要介紹了mybatis spring配置SqlSessionTemplate的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • python和java哪個(gè)學(xué)起來更簡(jiǎn)單

    python和java哪個(gè)學(xué)起來更簡(jiǎn)單

    在本篇內(nèi)容里小編給大家分享的是一篇關(guān)于python和java哪個(gè)學(xué)起來更簡(jiǎn)單的相關(guān)內(nèi)容,有興趣的朋友們參考下。
    2020-06-06
  • JAVA如何使用Math類操作數(shù)據(jù)

    JAVA如何使用Math類操作數(shù)據(jù)

    這篇文章主要介紹了JAVA如何使用Math類操作數(shù)據(jù),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • centos下GitLab+Jenkins持續(xù)集成環(huán)境搭建(安裝jenkins)

    centos下GitLab+Jenkins持續(xù)集成環(huán)境搭建(安裝jenkins)

    這篇文章主要為大家詳細(xì)介紹了centos下搭建GitLab+Jenkins持續(xù)集成環(huán)境,安裝jenkins的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • Java中使用Levenshtein距離實(shí)現(xiàn)字符串相似度匹配方式

    Java中使用Levenshtein距離實(shí)現(xiàn)字符串相似度匹配方式

    這篇文章主要介紹了Java中使用Levenshtein距離實(shí)現(xiàn)字符串相似度匹配方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-06-06
  • Java 實(shí)戰(zhàn)項(xiàng)目錘煉之在線美食網(wǎng)站系統(tǒng)的實(shí)現(xiàn)流程

    Java 實(shí)戰(zhàn)項(xiàng)目錘煉之在線美食網(wǎng)站系統(tǒng)的實(shí)現(xiàn)流程

    讀萬卷書不如行萬里路,只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+SSM+jsp+mysql+maven實(shí)現(xiàn)一個(gè)在線美食網(wǎng)站系統(tǒng),大家可以在過程中查缺補(bǔ)漏,提升水平
    2021-11-11
  • MyBatis Map結(jié)果的Key轉(zhuǎn)為駝峰式

    MyBatis Map結(jié)果的Key轉(zhuǎn)為駝峰式

    今天小編就為大家分享一篇關(guān)于MyBatis Map結(jié)果的Key轉(zhuǎn)為駝峰式,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-12-12

最新評(píng)論

潞城市| 鄂州市| 宣汉县| 陵水| 丰台区| 酒泉市| 东乌珠穆沁旗| 灯塔市| 历史| 丰城市| 山西省| 乃东县| 四平市| 嘉黎县| 漳平市| 丹巴县| 崇礼县| 双鸭山市| 隆子县| 盘山县| 枣阳市| 柯坪县| 茂名市| 宁武县| 讷河市| 武义县| 平陆县| 肃北| 合水县| 晋宁县| 甘德县| 甘谷县| 白山市| 湘潭县| 安图县| 上饶县| 定陶县| 贵州省| 依兰县| 临洮县| 饶河县|