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

MyBatis設(shè)計(jì)SQL返回布爾值(Boolean)的常見(jiàn)方法

 更新時(shí)間:2025年06月08日 15:25:01   作者:悟能不能悟  
這篇文章主要為大家詳細(xì)介紹了MyBatis設(shè)計(jì)SQL返回布爾值(Boolean)的幾種常見(jiàn)方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

方案一:使用COUNT查詢存在性(推薦)

<select id="checkUserExists" resultType="_boolean">
    SELECT COUNT(*) > 0 
    FROM users 
    WHERE username = #{username}
</select>

說(shuō)明??:

MySQL中COUNT(*) > 0直接返回1(true)或0(false)

MyBatis自動(dòng)將數(shù)字轉(zhuǎn)換為Java的boolean類型(1→true, 0→false)

方案二:條件表達(dá)式直接返回布爾

<select id="isAccountActive" resultType="java.lang.Boolean">
    SELECT (status = 'ACTIVE') 
    FROM accounts 
    WHERE account_id = #{id}
</select>

方案三:存在性檢查(EXISTS優(yōu)化)

<select id="hasUserPermission" resultType="boolean">
    SELECT EXISTS(
        SELECT 1 
        FROM permissions 
        WHERE user_id = #{userId} 
        AND permission = #{perm}
    )
</select>

??優(yōu)勢(shì)??:比COUNT更高效,數(shù)據(jù)庫(kù)在找到第一條匹配記錄即返回

方案四:處理更新/刪除操作

<update id="deactivateUser">
    UPDATE users SET active = 0 WHERE id = #{id}
</update>

在Mapper接口定義:

// 返回Boolean類型
Boolean deactivateUser(Long id);

??原理??:MyBatis自動(dòng)將影響行數(shù)轉(zhuǎn)換:

  • ≥1行 → true
  • 0行 → false

方案五:自定義TypeHandler(高級(jí)用法)

創(chuàng)建處理器:

public class BooleanTypeHandler extends BaseTypeHandler<Boolean> {
    @Override
    public void setNonNullParameter(...) {
        ps.setString(i, parameter ? "Y" : "N");
    }
    
    @Override
    public Boolean getNullableResult(ResultSet rs, String col) {
        return "Y".equals(rs.getString(col));
    }
    // 其他重寫方法省略...
}

配置使用:

<resultMap type="User">
    <result property="vip" column="is_vip" 
            typeHandler="com.example.BooleanTypeHandler"/>
</resultMap>

最佳實(shí)踐建議

1.??查詢場(chǎng)景優(yōu)先用??

SELECT COUNT(*) > 0 FROM ...  -- 簡(jiǎn)單條件
SELECT EXISTS(...)           -- 復(fù)雜條件

2.??更新場(chǎng)景??:直接用Boolean接收更新操作返回值

3.避免誤區(qū)??:

<!-- 錯(cuò)誤:resultType不能是boolean -->
<select id="isAdmin" resultType="boolean">
     SELECT is_admin FROM users WHERE id=#{id}
</select>

需改為:

<select id="isAdmin" resultType="_boolean">
     SELECT IF(is_admin='Y', true, false) 
     FROM users 
     WHERE id=#{id}
</select>

完整使用示例

Mapper接口:

public interface UserMapper {
    // 檢查用戶名是否存在
    boolean existsByUsername(@Param("name") String username);
    
    // 禁用用戶并返回是否成功
    Boolean deactivateUser(Long id);
}

XML配置:

<select id="existsByUsername" resultType="_boolean">
    SELECT EXISTS(
        SELECT 1 FROM users 
        WHERE username = #{name}
    )
</select>
 
<update id="deactivateUser">
    UPDATE users SET active = 0 WHERE id = #{id}
</update>

Java調(diào)用:

UserMapper mapper = session.getMapper(UserMapper.class);
 
// 檢查用戶名
boolean exists = mapper.existsByUsername("john_doe");
System.out.println("Username exists? " + exists);
 
// 禁用用戶
Boolean success = mapper.deactivateUser(1001L);
if(success) {
    System.out.println("User deactivated");
}

根據(jù)具體數(shù)據(jù)庫(kù)類型可能需要調(diào)整:

??Oracle??:用1和0代替布爾

??PostgreSQL??:可直接返回::boolean

??SQL Server??:用CASE WHEN...THEN 1 ELSE 0 END

到此這篇關(guān)于MyBatis設(shè)計(jì)SQL返回布爾值(Boolean)的常見(jiàn)方法的文章就介紹到這了,更多相關(guān)MyBatis設(shè)計(jì)SQL返回布爾值內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java 四舍五入保留小數(shù)的實(shí)現(xiàn)方法

    java 四舍五入保留小數(shù)的實(shí)現(xiàn)方法

    下面小編就為大家?guī)?lái)一篇java 四舍五入保留小數(shù)的實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-09-09
  • Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(46)

    Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(46)

    下面小編就為大家?guī)?lái)一篇Java基礎(chǔ)的幾道練習(xí)題(分享)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧,希望可以幫到你
    2021-08-08
  • Mybatis-Plus 官方神器發(fā)布

    Mybatis-Plus 官方神器發(fā)布

    mybatis-mate 為 mp 企業(yè)級(jí)模塊,支持分庫(kù)分表,數(shù)據(jù)審計(jì)、數(shù)據(jù)敏感詞過(guò)濾(AC算法),字段加密,字典回寫(數(shù)據(jù)綁定),數(shù)據(jù)權(quán)限,表結(jié)構(gòu)自動(dòng)生成 SQL 維護(hù)等,旨在更敏捷優(yōu)雅處理數(shù)據(jù),今天介紹一個(gè) MyBatis - Plus 官方發(fā)布的神器,感興趣的朋友一起看看吧
    2021-11-11
  • JDK15正式發(fā)布(新增功能預(yù)覽)

    JDK15正式發(fā)布(新增功能預(yù)覽)

    這篇文章主要介紹了JDK15正式發(fā)布,新增功能預(yù)覽,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2020-09-09
  • springboot實(shí)現(xiàn)打印彩色日志

    springboot實(shí)現(xiàn)打印彩色日志

    這篇文章主要介紹了springboot實(shí)現(xiàn)打印彩色日志的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • 深入探討JAVA中的異常與錯(cuò)誤處理

    深入探討JAVA中的異常與錯(cuò)誤處理

    這篇文章詳細(xì)介紹了JAVA中的異常與錯(cuò)誤處理,有需要的朋友可以參考一下
    2013-09-09
  • Java 中DateUtils日期工具類的實(shí)例詳解

    Java 中DateUtils日期工具類的實(shí)例詳解

    這篇文章主要介紹了Java 中DateUtils日期工具類的實(shí)例詳解的相關(guān)資料,有時(shí)候開(kāi)發(fā)java項(xiàng)目使用日期類型,這里介紹下日期工具類,需要的朋友可以參考下
    2017-08-08
  • Java的NIO之通道channel詳解

    Java的NIO之通道channel詳解

    這篇文章主要介紹了Java的NIO之通道channel詳解,通道channel由java.nio.channels 包定義的,Channel 表示IO源與目標(biāo)打開(kāi)的連接,Channel類類似于傳統(tǒng)的"流",只不過(guò)Channel本身不能直接訪問(wèn)數(shù)據(jù),Channel只能與Buffer進(jìn)行交互,需要的朋友可以參考下
    2023-10-10
  • java操作hdfs的方法示例代碼

    java操作hdfs的方法示例代碼

    這篇文章主要介紹了java操作hdfs的相關(guān)資料,在本地配置Hadoop和Maven的環(huán)境變量,首先需從官網(wǎng)下載與服務(wù)器相同版本的Hadoop安裝包,配置環(huán)境變量后,引入Maven的配置文件,以便管理項(xiàng)目依賴,最后,編寫代碼實(shí)現(xiàn)對(duì)HDFS的連接和操作,完成數(shù)據(jù)的讀寫,需要的朋友可以參考下
    2022-02-02
  • 一文詳解如何使用線程池來(lái)優(yōu)化我們的應(yīng)用程序

    一文詳解如何使用線程池來(lái)優(yōu)化我們的應(yīng)用程序

    線程池是一種工具,但并不是適用于所有場(chǎng)景。在使用線程池時(shí),我們需要根據(jù)應(yīng)用程序的性質(zhì)、計(jì)算資源的可用性和應(yīng)用程序的需求進(jìn)行適當(dāng)?shù)呐渲?。本文主要介紹了如何使用線程池來(lái)優(yōu)化我們的應(yīng)用程序,需要的可以參考一下
    2023-04-04

最新評(píng)論

浏阳市| 桦川县| 都昌县| 开阳县| 南皮县| 正镶白旗| 鹰潭市| 本溪市| 高邑县| 扶沟县| 温泉县| 阿克| 晋城| 和硕县| 明水县| 庄河市| 甘南县| 仁寿县| 大洼县| 岫岩| 德安县| 京山县| 南木林县| 蛟河市| 涪陵区| 黄山市| 陵川县| 荔波县| 田林县| 当雄县| 桂东县| 宽城| 安平县| 娄底市| 香格里拉县| 河间市| 垣曲县| 扎鲁特旗| 兴安盟| 古交市| 绥阳县|