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

mybatis動態(tài)SQL常用的標(biāo)簽使用及說明

 更新時(shí)間:2026年04月27日 15:48:33   作者:m0_59259076  
文章主要講解了MyBatis中的動態(tài)SQL標(biāo)簽,包括使用場景、作用和示例,主要介紹了<where>、<choose>、&<set>、&<foreach>、&&<bind>等等、標(biāo)簽的的用用使用方法和作用,以及<sql>片段的概念和引用方式

1. <sql>標(biāo)簽

也叫<sql>片段,在使用sql片段時(shí)使用include標(biāo)簽通過sql片段的id進(jìn)行引用,sql片段的id在當(dāng)前空間是唯一的,sql片段中也可以寫其他的內(nèi)容,只要符合語法規(guī)范都是可以的。

示例:

    <!-- 通用查詢結(jié)果列 -->
    <sql id="Base_Column_List">
        id, name, age, hobby, del_flag, create_time, update_time
    </sql>
    <select id="listAnimals" resultType="com.zhang.entity.Animal">
        select
        <include refid="Base_Column_List"></include>
        from animal
    </select>

(注:<include>可以是單標(biāo)簽的,效果是一樣的,我這里使用了雙標(biāo)簽~) 

2.<where>標(biāo)簽

根據(jù)where其后是否有sql,判斷拼接 where,滿足條件就拼接,否則不拼接。示例:

    <select id="getAnimalByName" resultType="com.zhang.entity.Animal">
        select * from animal
        <where>
            <if test="name!=null and name!=''">
                and name = #{name}
            </if>
        </where>
    </select>

3.<choose> 標(biāo)簽

類似于Java中的switch分支。只進(jìn)入一個滿足when的條件,如果所有when都不滿足,則進(jìn)入otherwise。

示例:

    <select id="getAnimalsByNameOrHobby" resultType="com.zhang.entity.Animal">
        select * from animal
        <choose>
            <when test="hobby!=null and hobby!='' and name!=null and name!=''">
                hobby = #{hobby} and name = #{name}
            </when>
            <when test="hobby!=null and hobby!=''">
                hobby = #{hobby}
            </when>
            <otherwise>
                name = #{name}
            </otherwise>
        </choose>
    </select>

4.<set>標(biāo)簽

與where有相似,其后如果存在條件,則拼接set。

<set>標(biāo)簽會動態(tài)地在行首插入SET關(guān)鍵字,并且自動幫我們?nèi)サ舳嘤嗟亩禾枺m用于update,示例:

    <update id="update">
        update animal
        <set>
            <if test="age!=null and age!=''">
                age = #{age}
            </if>
            <if test="name!=null and name!=''">
                name = #{name},
            </if>
            <if test="hobby!=null and hobby!=''">
                hobby = #{hobby}
            </if>
        </set>
        where id = #{id}
    </update>
    <update id="updateById" parameterType="com.zhang.entity.Animal">
    update animal
    <set>
        <if test="name != null">
            `name` = #{name,jdbcType=VARCHAR},
        </if>
        <if test="age != null">
            `age` = #{age,jdbcType=VARCHAR},
        </if>
        <if test="hobby != null">
            hobby = #{hobby,jdbcType=VARCHAR},
        </if>
        <if test="create_time != null">
            create_time = #{create_time,jdbcType=TIMESTAMP},
        </if>
        <if test="update_time != null">
            update_time = #{update_time,jdbcType=TIMESTAMP},
        </if>
    </set>
    where id = #{id,jdbcType=INTEGER}
    </update>

5.<foreach>標(biāo)簽

用于遍歷List、Map、Array , 屬性如下:

  • collection:指定需要遍歷的元素
  • item:遍歷之后的每一項(xiàng)
  • separator:定義foreach里面語句的分隔符
  • index:map中代表key,數(shù)組中代表數(shù)組下標(biāo)
    <select id="listAnimals" resultType="com.zhang.entity.Animal">
        SELECT * FROM animal
        WHERE id in
        <foreach collection="ids" item="id" index="index"
                 open="(" close=")" separator=",">
            #{id}
        </foreach>
    </select>

6.<bind>標(biāo)簽,用來定義變量

示例:

  • mapper層:
List<Animal> getByName(@Param("animalName") String name);
  • xml映射層:
    <select id="getByName" resultType="com.zhang.entity.Animal">
        <!--animalName為傳過來的參數(shù)-->
        <!--根據(jù)動物名字進(jìn)行模糊查詢-->
        <bind name="animalNameLike" value="'%'+ animalName +'%'"/>
        select * from animal
        <where>
            <if test="animalName != null and animalName != ''">
                and `name` like #{animalNameLike}
            </if>
        </where>
    </select>

總結(jié)

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java如何在沙箱環(huán)境中測試支付寶支付接口

    Java如何在沙箱環(huán)境中測試支付寶支付接口

    這篇文章主要介紹了Java如何在沙箱環(huán)境中測試支付寶支付接口,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • 在SpringBoot項(xiàng)目中的使用Swagger的方法示例

    在SpringBoot項(xiàng)目中的使用Swagger的方法示例

    這篇文章主要介紹了在SpringBoot項(xiàng)目中的使用Swagger的方法示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • 深入分析Spring Cloud 負(fù)載均衡器架構(gòu)選型

    深入分析Spring Cloud 負(fù)載均衡器架構(gòu)選型

    文章詳細(xì)介紹了OpenFeign的初始化和執(zhí)行流程,包括FeignClient注解、FeignClientsRegistrar類、FeignClientFactoryBean工廠類、Targeter接口及其實(shí)現(xiàn)等,感興趣的朋友一起看看吧
    2024-12-12
  • Java設(shè)計(jì)模式之單例和原型

    Java設(shè)計(jì)模式之單例和原型

    這篇文章介紹了Java設(shè)計(jì)模式之單例和原型,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-09-09
  • 基于Redis分布式鎖Redisson及SpringBoot集成Redisson

    基于Redis分布式鎖Redisson及SpringBoot集成Redisson

    這篇文章主要介紹了基于Redis分布式鎖Redisson及SpringBoot集成Redisson,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小小伙伴可以參考一下
    2022-09-09
  • 淺談Maven安裝及環(huán)境配置出錯的解決辦法

    淺談Maven安裝及環(huán)境配置出錯的解決辦法

    這篇文章主要介紹了淺談Maven安裝及環(huán)境配置出錯的解決辦法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Java?并發(fā)編程基礎(chǔ)概念與常見問題整理

    Java?并發(fā)編程基礎(chǔ)概念與常見問題整理

    這篇文章主要介紹了Java?并發(fā)編程基礎(chǔ)概念與常見問題整理,本文將帶你走進(jìn)Java并發(fā)編程的世界,系統(tǒng)梳理基礎(chǔ)概念、剖析常見問題,并補(bǔ)充實(shí)用細(xì)節(jié),為后續(xù)深入學(xué)習(xí)打下堅(jiān)實(shí)基礎(chǔ),感興趣的朋友跟隨小編一起看看吧
    2026-03-03
  • java線程池核心線程不被摧毀的原理及分析

    java線程池核心線程不被摧毀的原理及分析

    這篇文章主要介紹了java線程池核心線程不被摧毀的原理及分析,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-05-05
  • Springboot居然可以設(shè)置動態(tài)的Banner(推薦)

    Springboot居然可以設(shè)置動態(tài)的Banner(推薦)

    這篇文章主要介紹了Springboot居然可以設(shè)置動態(tài)的Banner,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • 在CentOS上配置Java環(huán)境變量的教程

    在CentOS上配置Java環(huán)境變量的教程

    這篇文章主要介紹了在CentOS上配置Java環(huán)境變量的教程,同時(shí)適用于Fedora等其他RedHat系的Linux系統(tǒng),需要的朋友可以參考下
    2015-06-06

最新評論

益阳市| 健康| 顺义区| 安岳县| 大邑县| 鲁山县| 永泰县| 新乐市| 凭祥市| 武山县| 旬阳县| 河间市| 安仁县| 乐东| 米泉市| 临西县| 石楼县| 柏乡县| 通州区| 犍为县| 鄱阳县| 平潭县| 读书| 墨玉县| 周至县| 建瓯市| 张家口市| 岑溪市| 翁牛特旗| 乌兰浩特市| 永康市| 济源市| 枣强县| 阿拉善盟| 乐平市| 循化| 象山县| 集贤县| 徐水县| 桂林市| 瓮安县|