洛陽網(wǎng)站建設(shè)哪家專業(yè)新聞源軟文推廣平臺(tái)
目錄
一、MyBatis兩種SQL配置方式
二、使用XML映射文件配置SQL語句
三、使用注解配置SQL語句
四、兩種方式對(duì)比
總結(jié)
1、注解
2、XML配置
五、MyBatis多數(shù)據(jù)源的兩種配置方式
參考
一、MyBatis兩種SQL配置方式
MyBatis 提供了兩種方式來配置SQL語句:注解(如?@Select
)和XML映射文件。
- 映射文件:通過XML文件來定義SQL語句和映射關(guān)系
- 注解方式:通過在Java代碼中使用注解來定義SQL語句和映射關(guān)系
二、使用XML映射文件配置SQL語句
在MyBatis中,SQL語句通常定義在XML文件中。例如,定義一個(gè)查詢用戶的SQL:
<!-- UserMapper.xml -->
<mapper namespace="com.example.mapper.UserMapper"><select id="selectUser" parameterType="int" resultType="com.example.model.User">SELECT * FROM users WHERE id = #{id}</select>
</mapper>
注:parameterType
屬性指定了輸入?yún)?shù)的類型,resultType
屬性指定了返回結(jié)果的類型
三、使用注解配置SQL語句
-
MyBatis 是一個(gè) XML 驅(qū)動(dòng)的框架。配置信息是基于 XML 的,而且映射語句也是定義在 XML 中的。MyBatis 3 以后,支持注解配置。注解配置基于配置 API;而配置 API 基于 XML 配置。
-
MyBatis 支持諸如 @Insert、@Update、@Delete、@Select、@Result 等注解。
使用@Select
注解定義上述同樣的查詢用戶的SQL:
package com.example.mapper;import com.example.model.User;
import org.apache.ibatis.annotations.Select;public interface UserMapper {@Select("SELECT * FROM users WHERE id = #{id}")User selectUser(int id);
}
注:@Select
注解用于定義SQL語句,其中#{id}
表示一個(gè)占位符,用于在SQL執(zhí)行時(shí)替換為方法參數(shù)id
的值
四、兩種方式對(duì)比
總結(jié)
- 注解:適用于簡(jiǎn)單、直觀的 SQL 語句,便于快速開發(fā)和維護(hù),比如,團(tuán)隊(duì)對(duì)代碼整潔度和維護(hù)性要求較高,且 SQL 語句相對(duì)簡(jiǎn)單的情況。
- XML 配置方式:適用于大型項(xiàng)目或 SQL 語句特別復(fù)雜的情況,提供高靈活性和易于擴(kuò)展的維護(hù)方式。
1、注解
優(yōu)點(diǎn):
- 簡(jiǎn)潔直觀:SQL 語句直接寫在注解中,與接口方法緊密結(jié)合,便于閱讀和維護(hù)。
- 編譯時(shí)檢查:注解中的 SQL 語句在編譯時(shí)就能被檢測(cè)到,減少運(yùn)行時(shí)錯(cuò)誤。
- 減少配置文件:不需要額外的 XML 文件,減少了項(xiàng)目的復(fù)雜性。
缺點(diǎn):
- 復(fù)雜 SQL 支持不足:對(duì)于動(dòng)態(tài) SQL 或特別復(fù)雜的 SQL 語句,注解方式可能顯得力不從心。
- 可讀性問題:當(dāng) SQL 語句較長(zhǎng)或包含復(fù)雜邏輯時(shí),注解可能會(huì)使代碼顯得混亂。
- 靈活性差:SQL 語句在注解中寫死后,不易于動(dòng)態(tài)修改或擴(kuò)展。
2、XML配置
優(yōu)點(diǎn):
- 靈活性高:支持復(fù)雜的 SQL 語句和動(dòng)態(tài) SQL,易于管理和維護(hù)。
- 分離職責(zé):SQL 語句與 Java 代碼分離,便于獨(dú)立測(cè)試和修改(注: 這個(gè)可以理解為解耦,測(cè)如果測(cè)試環(huán)境想使用與生產(chǎn)環(huán)境不同的SQL,非常方便)。
- 易于擴(kuò)展:XML 文件可以方便地添加新的 SQL 語句,不影響現(xiàn)有代碼。
缺點(diǎn):
- 文件繁多:當(dāng)項(xiàng)目規(guī)模較大時(shí),可能需要管理大量的 XML 文件(注: 可以想一想,上百個(gè)文件,修改時(shí)非常麻煩)。
- 閱讀不便:需要在多個(gè)文件之間切換,不如注解方式直觀。
- 編譯時(shí)檢查不足:XML 文件中的錯(cuò)誤通常只能在運(yùn)行時(shí)被發(fā)現(xiàn)。
五、MyBatis多數(shù)據(jù)源的兩種配置方式
同一個(gè)項(xiàng)目涉及到多個(gè)數(shù)據(jù)庫,也就是多數(shù)據(jù)源。多數(shù)據(jù)源又可以分為兩種情況:
1)兩個(gè)或多個(gè)數(shù)據(jù)庫沒有相關(guān)性,各自獨(dú)立,其實(shí)這種可以作為兩個(gè)項(xiàng)目來開發(fā)。
2)兩個(gè)或多個(gè)數(shù)據(jù)庫是master-slave的關(guān)系,比如有mysql搭建一個(gè) master-master,其后又帶有多個(gè)slave;或者采用MHA搭建的master-slave復(fù)制;
MyBatis多數(shù)據(jù)源的配置主要有兩種方式:
- 通過@MapperScan注解,對(duì)不同包下的Mapper使用不同的sqlSessionFactory
- 通過@MapperScan注解加自定義注解,對(duì)使用不同注解的Mapper使用不同的sqlSessionFactory
參考
https://www.jb51.net/article/152380.htm
MyBatis 3種 使用 SQL 語句的方式;注解方式、注解提供器方式、XML 配置方式 - del88 - 博客園