MyBatis 的核心配置文件是干什么的? 它的結構是怎樣的? 哪些是必須配置的,哪些是可選的?

MyBatis 的核心配置文件(通常命名為 mybatis-config.xml)是 MyBatis 應用程序的入口點,它定義了 MyBatis 的全局配置信息 。

核心配置文件的作用:

  1. 配置 MyBatis 的運行時行為: 通過 <settings> 標簽設置全局參數,控制 MyBatis 的各種行為,例如是否開啟緩存、是否使用延遲加載、是否自動映射等。
  2. 配置數據源和事務管理器: 通過 <environments> 標簽配置數據庫連接信息和事務管理方式。
  3. 注冊類型別名: 通過 <typeAliases> 標簽為 Java 類型定義別名,簡化 XML 映射文件中的類型引用。
  4. 注冊類型處理器: 通過 <typeHandlers> 標簽注冊自定義的類型處理器,處理 Java 類型與 JDBC 類型之間的轉換。
  5. 注冊對象工廠: 通過 <objectFactory> 標簽注冊自定義的對象工廠,用于創建結果對象。
  6. 注冊插件: 通過 <plugins> 標簽注冊插件,攔截 MyBatis 的核心執行流程。
  7. 加載映射器: 通過 <mappers> 標簽加載 SQL 映射文件或 Mapper 接口,將 SQL 語句與 Java 代碼關聯起來。

核心配置文件的結構 (mybatis-config.xml):

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><!-- 屬性配置 (可選) --><properties resource="db.properties"/><!-- 全局設置 (可選) --><settings><setting name="cacheEnabled" value="true"/><setting name="lazyLoadingEnabled" value="false"/><!-- 其他設置 --></settings><!-- 類型別名 (可選) --><typeAliases><typeAlias alias="User" type="com.example.model.User"/><!-- 或者使用包掃描 --><!-- <package name="com.example.model"/> --></typeAliases><!-- 類型處理器 (可選) --><typeHandlers><typeHandler handler="com.example.MyTypeHandler"/><!-- 或者使用包掃描 --><!-- <package name="com.example.typehandler"/> --></typeHandlers><!-- 對象工廠(可選) --><objectFactory type="com.example.MyObjectFactory"/><!-- 插件 (可選) --><plugins><plugin interceptor="com.example.MyPlugin"/></plugins><!-- 環境配置 (必須) --><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="${driver}"/><property name="url" value="${url}"/><property name="username" value="${username}"/><property name="password" value="${password}"/></dataSource></environment></environments><!-- 數據庫廠商標識(可選)--><databaseIdProvider type="DB_VENDOR"><property name="SQL Server" value="sqlserver"/><property name="MySQL" value="mysql"/><property name="Oracle" value="oracle" /></databaseIdProvider><!-- 映射器 (必須) --><mappers><mapper resource="com/example/mapper/UserMapper.xml"/><!-- 或者使用類路徑 --><!-- <mapper class="com.example.mapper.UserMapper"/> --><!-- 或者使用包掃描 --><!-- <package name="com.example.mapper"/> --></mappers></configuration>

各部分配置詳解:

  • <configuration>: 根元素,所有配置都包含在這個元素中。
  • <properties> (可選):
    • 用于加載外部屬性文件(例如 db.properties),可以在配置文件中引用屬性文件中的值。
    • resource 屬性指定屬性文件的路徑。
    • 也可以直接在 <properties> 標簽內部定義屬性。
  • <settings> (可選):
    • 用于配置 MyBatis 的全局設置,控制 MyBatis 的運行時行為。
    • 常用的設置包括:
      • cacheEnabled: 是否開啟二級緩存 (默認 true)。
      • lazyLoadingEnabled: 是否開啟延遲加載 (默認 false)。
      • aggressiveLazyLoading: 是否開啟積極的延遲加載 (默認 false,MyBatis 3.4.1 及之前版本默認為 true)。
      • multipleResultSetsEnabled: 是否允許單個語句返回多個結果集 (默認 true)。
      • useColumnLabel: 是否使用列標簽代替列名 (默認 true)。
      • useGeneratedKeys: 是否允許 JDBC 支持自動生成主鍵 (默認 false)。
      • autoMappingBehavior: 自動映射的行為 (默認 PARTIAL,可選值:NONEPARTIALFULL)。
      • defaultExecutorType: 默認的執行器類型 (默認 SIMPLE,可選值:SIMPLEREUSEBATCH)。
      • mapUnderscoreToCamelCase: 是否開啟駝峰命名自動映射 (默認 false)。
      • localCacheScope: 一級緩存的作用域(默認 SESSION,可選值 SESSIONSTATEMENT
      • jdbcTypeForNull: 當傳入的參數為 null 時,使用的 JDBC 類型(默認OTHER,通常設置為 NULL)。
      • defaultStatementTimeout: 默認的語句超時時間(秒)。
  • <typeAliases> (可選):
    • 用于為 Java 類型定義別名,簡化 XML 映射文件中的類型引用。
    • typeAlias 標簽定義單個別名,package 標簽掃描指定包下的所有類,并自動生成別名(類名首字母小寫)。
  • <typeHandlers> (可選):
    • 用于注冊自定義的類型處理器。
    • typeHandler 標簽注冊單個類型處理器,package 標簽掃描指定包下的所有類型處理器。
  • <objectFactory> (可選):
    • 注冊一個自定義對象工廠,MyBatis 每次創建結果對象的新實例時,它都會使用一個對象工廠(ObjectFactory)實例來完成。
  • <plugins> (可選):
    • 用于注冊插件,攔截 MyBatis 的核心執行流程(例如,攔截 SQL 執行、參數設置、結果映射等)。
    • plugin 標簽注冊單個插件,interceptor 屬性指定插件類的全限定名。
  • <environments> (必須):
    • 用于配置數據源和事務管理器。
    • default 屬性指定默認的環境 ID。
    • <environment> 標簽定義一個環境,id 屬性是環境的唯一標識符。
    • <transactionManager> 標簽配置事務管理器:
      • type="JDBC": 使用 JDBC 的事務管理機制(需要手動提交或回滾事務)。
      • type="MANAGED": 將事務管理委托給容器(例如 Spring 或 Java EE 容器)。
    • <dataSource> 標簽配置數據源:
      • type="POOLED": 使用 MyBatis 內置的連接池。
      • type="UNPOOLED": 不使用連接池,每次都創建新的連接。
      • type="JNDI": 使用 JNDI 數據源。
      • <property> 標簽配置數據源的屬性,例如驅動類名、URL、用戶名、密碼等。
  • <databaseIdProvider>(可選):
    • MyBatis 可以根據不同的數據庫廠商執行不同的 SQL 語句
  • <mappers> (必須):
    • 用于加載 SQL 映射文件或 Mapper 接口。
    • <mapper resource="..."/>: 加載 XML 映射文件。
    • <mapper class="..."/>: 加載 Mapper 接口(使用注解配置 SQL)。
    • <package name="..."/>: 掃描指定包下的所有 Mapper 接口或 XML 映射文件(XML 文件需要與 Mapper 接口在同一個包下,且文件名與接口名相同)。

必須配置的元素:

  • <environments>: 必須配置至少一個數據源環境,否則 MyBatis 無法連接數據庫。
  • <mappers>: 必須加載至少一個 SQL 映射文件或 Mapper 接口,否則 MyBatis 無法執行 SQL 語句。

可選配置的元素:

  • <properties>
  • <settings>
  • <typeAliases>
  • <typeHandlers>
  • <objectFactory>
  • <plugins>
  • <databaseIdProvider>

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/72274.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/72274.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/72274.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

搜廣推校招面經四十九

tiktok廣告算法 一、倒排索引原理及Map中Key的處理 具體使用方法見【搜廣推校招面經三十六】 倒排索引&#xff08;Inverted Index&#xff09;是信息檢索系統中常用的一種數據結構&#xff0c;用于快速查找包含某個關鍵詞的文檔。以下是倒排索引的原理及Map中Key的處理方式的…

【零基礎入門unity游戲開發——unity3D篇】3D物理系統之 —— 3D剛體組件Rigidbody

考慮到每個人基礎可能不一樣,且并不是所有人都有同時做2D、3D開發的需求,所以我把 【零基礎入門unity游戲開發】 分為成了C#篇、unity通用篇、unity3D篇、unity2D篇。 【C#篇】:主要講解C#的基礎語法,包括變量、數據類型、運算符、流程控制、面向對象等,適合沒有編程基礎的…

C# net deepseek RAG AI開發 全流程 介紹

deepseek本地部署教程及net開發對接 步驟詳解&#xff1a;安裝教程及net開發對接全流程介紹 DeepSeekRAG 中的 RAG&#xff0c;全稱是 Retrieval-Augmented Generation&#xff08;檢索增強生成&#xff09;&#xff0c;是一種結合外部知識庫檢索與大模型生成能力的技術架構。其…

用舊的手機搭建 MQTT Broker

MQTT Broker搭建 在Android上搭建MQTT所需工具: termux 通過網盤分享的文件:termux-app_v0.118.1+github-debug_armeabi-v7a.apk 鏈接: https://pan.baidu.com/s/1Iii2szXAc02cKVGdP1EuzQ?pwd=fqsc 提取碼: fqsc 在 Termux 中使用 MQTT(Message Queuing Telemetry Trans…

b站視頻下載工具軟件怎么下載

自行配置FFMPEG環境 請優先選擇批量下載&#xff0c;會自處理視頻和音頻文件。 如果要下載更高質量請登陸。 沒有配置FFMPEG下載后會有報錯提示&#xff0c;視頻音頻文件無法合并生成mp4文件 更新批量下載標題&#xff0c;只取視頻原標題&#xff0c;B站反爬機制登陸后下載多了…

# linux有哪些桌面環境?有哪些顯示服務器協議及顯示服務器?有哪些用于開發圖形用戶界面的工具包?

linux有哪些桌面環境&#xff1f;有哪些顯示服務器協議及顯示服務器&#xff1f;有哪些用于開發圖形用戶界面的工具包&#xff1f; 文章目錄 linux有哪些桌面環境&#xff1f;有哪些顯示服務器協議及顯示服務器&#xff1f;有哪些用于開發圖形用戶界面的工具包&#xff1f;1 顯…

Java 大視界 -- Java 大數據分布式計算中的資源調度與優化策略(131)

&#x1f496;親愛的朋友們&#xff0c;熱烈歡迎來到 青云交的博客&#xff01;能與諸位在此相逢&#xff0c;我倍感榮幸。在這飛速更迭的時代&#xff0c;我們都渴望一方心靈凈土&#xff0c;而 我的博客 正是這樣溫暖的所在。這里為你呈上趣味與實用兼具的知識&#xff0c;也…

躲藏博弈中的策略優化:整合歷史數據、概率論與博弈論

躲藏博弈中的策略優化&#xff1a;整合歷史數據、概率論與博弈論 一、引言 躲藏博弈(Hiding Games)作為一類特殊的博弈模型&#xff0c;廣泛存在于軍事對抗、網絡安全、商業競爭甚至日常生活中。其核心在于一方(躲藏者)試圖避免被另一方(尋找者)發現&#xff0c;雙方各自選擇…

時序數據庫 TDengine 到 MySQL 數據遷移同步

簡述 TDengine 是一款開源、高性能、云原生的時序數據庫&#xff0c;專為物聯網、車聯網、工業互聯網、金融、IT 運維等場景優化設計。在工業自動化的時代&#xff0c;時序數據庫在電力、軌道交通、智能制造等領域有著廣泛的應用。 MySQL 是全球廣泛使用的開源關系型數據庫&a…

基于YOLO11深度學習的舌苔舌象檢測識別與診斷系統【python源碼+Pyqt5界面+數據集+訓練代碼】

《------往期經典推薦------》 一、AI應用軟件開發實戰專欄【鏈接】 項目名稱項目名稱1.【人臉識別與管理系統開發】2.【車牌識別與自動收費管理系統開發】3.【手勢識別系統開發】4.【人臉面部活體檢測系統開發】5.【圖片風格快速遷移軟件開發】6.【人臉表表情識別系統】7.【…

【愚公系列】《高效使用DeepSeek》003-DeepSeek文檔處理和其他頂級 AI模型的區別

標題詳情作者簡介愚公搬代碼頭銜華為云特約編輯,華為云云享專家,華為開發者專家,華為產品云測專家,CSDN博客專家,CSDN商業化專家,阿里云專家博主,阿里云簽約作者,騰訊云優秀博主,騰訊云內容共創官,掘金優秀博主,亞馬遜技領云博主,51CTO博客專家等。近期榮譽2022年度…

正新雞排:在變革浪潮中領航,打造連鎖餐飲新生態

在當下風云變幻的餐飲市場中&#xff0c;連鎖品牌猶如逆水行舟&#xff0c;不進則退。作為國內坐擁萬店的知名連鎖餐飲品牌&#xff0c;正新雞排2023年賣出了7.2億片雞排&#xff0c;集團營收同比增長28%。在《2024年中國雞排連鎖品牌10強榜單》中&#xff0c;正新雞排以高達95…

MyBatis 的一級、二級緩存

文章目錄 1?? 一級緩存&#xff08;Local Cache&#xff09;&#x1f4cc; 定義&#x1f680; 示例代碼 2?? 二級緩存&#xff08;Global Cache&#xff09;&#x1f4cc; 定義&#x1f680; 使用方式 3?? 一級緩存 vs. 二級緩存 &#x1f4ca;4?? 數據共享問題&#x…

軟件性能測試與功能測試聯系和區別

隨著軟件開發技術的迅猛發展&#xff0c;軟件性能測試和功能測試成為了確保軟件質量的兩個重要環節。那么只有一字之差的性能測試和功能測試分別是什么?又有哪些聯系和區別呢? 一、軟件性能測試是什么?   軟件性能測試是為了評估軟件系統在特定條件下的表現&#xff0c;包…

Vue 框架使用難點與易錯點剖析:避開陷阱,提升開發效率

Vue.js 作為當下最流行的前端框架之一&#xff0c;以其輕量、易用和靈活的特性深受開發者喜愛。然而&#xff0c;即使是經驗豐富的開發者&#xff0c;在使用 Vue 的過程中也難免會遇到一些難點和易錯點。本文將深入分析 Vue 開發中常見的“坑”&#xff0c;并提供解決方案和代碼…

基于大模型的上瞼下垂手術全流程預測與方案優化研究報告

目錄 一、引言 1.1 研究背景與目的 1.2 研究意義 1.3 研究方法與創新點 二、上瞼下垂相關理論基礎 2.1 上瞼下垂的定義與分類 2.2 發病機制與影響 2.3 傳統治療方法概述 三、大模型技術原理與應用 3.1 大模型概述 3.2 在醫療領域的應用現狀 3.3 用于上瞼下垂預測的…

Odoo Http鑒權+調用后端接口

最近在調研Odoo18&#xff0c;包括它的前后端原理、源碼等。發現官方的開發文檔并不十分實用&#xff0c;比如標題這種簡單的實用需求&#xff0c;竟然浪費了一點時間&#xff0c;特此記錄。 官方文檔&#xff1a;External API — Odoo 18.0 documentation 前提&#xff1a;首…

【Go每日一練】實現簡單的控制臺計算器

&#x1f47b;創作者&#xff1a;丶重明 &#x1f47b;創作時間&#xff1a;2025年3月7日 &#x1f47b;擅長領域&#xff1a;運維 目錄 1.&#x1f636;?&#x1f32b;?題目&#xff1a;簡單的控制臺計算器2.&#x1f636;?&#x1f32b;?代碼輸出3.&#x1f636;?&#…

Linux常見問題與分析

操作系統進行線程切換時進行的動作 1. 保存當前線程的上下文 寄存器狀態&#xff1a;保存 CPU 寄存器&#xff08;如通用寄存器、程序計數器 PC、棧指針 SP 等&#xff09;到當前線程的 線程控制塊&#xff08;TCB&#xff09; 中。內核棧信息&#xff1a;如果線程在內核態運…

HTML塊級元素和內聯元素(簡單易懂)

在HTML中&#xff0c;元素可以分為塊級元素&#xff08;Block-level elements&#xff09;和內聯元素&#xff08;Inline elements&#xff09;。這兩類元素在頁面布局和樣式應用上有不同的特點和用途。 一、塊級元素&#xff08;Block-level elements&#xff09; 1. 定義 …