国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

MyBatis動態(tài)SQL:打造靈活可變的數(shù)據(jù)庫操作

這篇具有很好參考價值的文章主要介紹了MyBatis動態(tài)SQL:打造靈活可變的數(shù)據(jù)庫操作。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

動態(tài)SQL就是根據(jù)不同的條件或需求動態(tài)地生成查詢語句,比如動態(tài)搜索條件、動態(tài)表或列名、動態(tài)排序等。

if標簽

在我們填寫一些信息時,有些信息是必填字段,有的則是非必填的,這些信息的傳入就需要使?動態(tài)標簽 if來判斷了

創(chuàng)建這樣想學(xué)生表就可以進行測試了

drop table if exists stu;
create  table stu(
    id int primary key auto_increment,
    name varchar(100) ,
    sex  varchar(10) 

) default charset 'utf8mb4';


下面是xml語句

  <insert id="insert" useGeneratedKeys="true" keyProperty="id" parameterType="com.example.mybatisdemo.model.User">
        INSERT INTO stu(name
        <if test="sex != null">, sex</if>) VALUES (#{name}
        <if test="sex != null">, #{sex}</if>)
    </insert>

MyBatis動態(tài)SQL:打造靈活可變的數(shù)據(jù)庫操作,JavaEE,數(shù)據(jù)庫,mybatis,sql,學(xué)習(xí),java
MyBatis動態(tài)SQL:打造靈活可變的數(shù)據(jù)庫操作,JavaEE,數(shù)據(jù)庫,mybatis,sql,學(xué)習(xí),java
通過結(jié)果我們發(fā)現(xiàn),數(shù)據(jù)已經(jīng)被插入進入數(shù)據(jù)庫了,并且sex為空。

trim標簽

如果所有字段都是?必填項,可以考慮使?trim標簽結(jié)合if標簽,對多個字段都采取動態(tài)?成的?式。
trim標簽中有如下屬性:

  • prefix:表示整個語句塊,以prefix的值作為前綴
  • suffix:表示整個語句塊,以suffix的值作為后綴
  • prefixOverrides:表示整個語句塊要去除掉的前綴
  • suffixOverrides:表示整個語句塊要去除掉的后綴

通過對前面的xml代碼進行修改結(jié)果如下:

<insert id="insert" useGeneratedKeys="true" keyProperty="id" parameterType="com.example.mybatisdemo.model.User">
        INSERT INTO stu
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="name != null ">name,</if>
            <if test="sex != null">sex</if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="name != null">#{name},</if>
            <if test="sex != null">#{sex}</if>
        </trim>


    </insert>

MyBatis動態(tài)SQL:打造靈活可變的數(shù)據(jù)庫操作,JavaEE,數(shù)據(jù)庫,mybatis,sql,學(xué)習(xí),java
MyBatis動態(tài)SQL:打造靈活可變的數(shù)據(jù)庫操作,JavaEE,數(shù)據(jù)庫,mybatis,sql,學(xué)習(xí),java
數(shù)據(jù)添加成功,依舊只添加了姓名。

where標簽

根據(jù)屬性做 where 條件查詢,?戶對象中屬性不為 null 的,都為查詢條件。
寫一個查詢方法:

  @RequestMapping("selectByCondition")
    public List<User> selectByCondition(User user){
        return userService.selectByCondition(user);
    }

xml代碼如下:

 </insert>
    <select id="selectByCondition" parameterType="com.example.mybatisdemo.model.User"  >
             select id,name,sex from stu
        <where>
            <if test="name != null "> and  name=#{name} </if>
            <if test=" sex != null"> and  sex= #{sex}  </if>
        </where>
    </select>

根據(jù)name進行查詢
MyBatis動態(tài)SQL:打造靈活可變的數(shù)據(jù)庫操作,JavaEE,數(shù)據(jù)庫,mybatis,sql,學(xué)習(xí),java
MyBatis動態(tài)SQL:打造靈活可變的數(shù)據(jù)庫操作,JavaEE,數(shù)據(jù)庫,mybatis,sql,學(xué)習(xí),java

<where>標簽也可以使? <trim prefix="where" prefixOverrides="and"> 替換。

set標簽

根據(jù)傳?的?戶對象屬性來更新?戶數(shù)據(jù),可以使?set標簽來指定動態(tài)內(nèi)容。
UserMapper 接?中修改?戶?法:根據(jù)傳?的?戶 id 屬性,修改其他不為 null 的屬性:

int updateById(User user);

在xml中添加更新?戶 sql:

 <update id="updateById" parameterType="com.example.mybatisdemo.model.User" >
        update stu
        <set>

            <if test="name != null">
                name=#{name},
            </if>
            <if test="sex != null">
                sex=#{sex},
            </if>
        </set>
        where id=#{id}
    </update>

MyBatis動態(tài)SQL:打造靈活可變的數(shù)據(jù)庫操作,JavaEE,數(shù)據(jù)庫,mybatis,sql,學(xué)習(xí),java
查看數(shù)據(jù)庫發(fā)現(xiàn)修改成功
MyBatis動態(tài)SQL:打造靈活可變的數(shù)據(jù)庫操作,JavaEE,數(shù)據(jù)庫,mybatis,sql,學(xué)習(xí),java

<set>標簽也可以使? <trim prefix="set" suffixOverrides=","> 替換

foreach標簽

對集合進?遍歷時可以使?該標簽。foreach標簽有如下屬性:

  • collection:綁定?法參數(shù)中的集合,如 List,Set,Map或數(shù)組對象
  • item:遍歷時的每?個對象
  • open:語句塊開頭的字符串
  • close:語句塊結(jié)束的字符串
  • separator:用于指定循環(huán)迭代時元素之間的分隔符

例如一次性刪除多個id對應(yīng)的用戶

ArticleMapper 中新增接??法:

int deleteByIds(List<Integer> ids);

UserMapper.xml 中新增刪除 sql:

  <delete id="deleteByIds">
        delete from stu
        where id in
        <foreach collection="list" item="item" open="(" close=")" separator=","
        >
            #{item}
        </foreach>
    </delete>

我們刪除id為1,2,3的用戶信息
MyBatis動態(tài)SQL:打造靈活可變的數(shù)據(jù)庫操作,JavaEE,數(shù)據(jù)庫,mybatis,sql,學(xué)習(xí),java
MyBatis動態(tài)SQL:打造靈活可變的數(shù)據(jù)庫操作,JavaEE,數(shù)據(jù)庫,mybatis,sql,學(xué)習(xí),java
通過查看數(shù)據(jù)庫我們知道,刪除已經(jīng)成功。

以上就是我記錄的一些動態(tài)SQL,如果想了解更多可前往mybatis官網(wǎng)查看 。文章來源地址http://www.zghlxwxcb.cn/news/detail-654538.html

到了這里,關(guān)于MyBatis動態(tài)SQL:打造靈活可變的數(shù)據(jù)庫操作的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 使用mybatis和dynamic-datasource-spring-boot-starter動態(tài)切換數(shù)據(jù)源操作數(shù)據(jù)庫

    記錄 :415 場景 :使用mybatis和dynamic-datasource-spring-boot-starter動態(tài)切換數(shù)據(jù)源操作數(shù)據(jù)庫。 版本 :JDK 1.8,Spring?Boot 2.6.3,dynamic-datasource-spring-boot-starter-3.3.2,mybatis-3.5.9。 源碼 :https://github.com/baomidou/dynamic-datasource-spring-boot-starter dynamic-datasource-spring-boot-starter :一個基于springboot的快

    2023年04月19日
    瀏覽(23)
  • 在IDEA中配置MySQL數(shù)據(jù)庫連接以及在使用mybatis時設(shè)置sql語句的代碼提示功能

    在IDEA中配置MySQL數(shù)據(jù)庫連接以及在使用mybatis時設(shè)置sql語句的代碼提示功能

    在IDEA中配置MySQL數(shù)據(jù)庫連接以及在使用mybatis 時設(shè)置 sql語句的代碼提示功能 一:在IDEA中配置MySQL數(shù)據(jù)庫連接 第一步:在IDEA右側(cè)區(qū)域有database選項,點擊進去 第二步:database ?- data soucre - mysql? ?第三步:配置連接信息,連接數(shù)據(jù)庫 ? 第四步:顯示的數(shù)據(jù)庫以及表的信息 ?第

    2024年02月14日
    瀏覽(37)
  • 使用dynamic-datasource-spring-boot-starter動態(tài)切換數(shù)據(jù)源操作數(shù)據(jù)庫(MyBatis-3.5.9)

    記錄 :383 場景 :使用dynamic-datasource-spring-boot-starter動態(tài)切換數(shù)據(jù)源,使用MyBatis操作數(shù)據(jù)庫。提供三種示例:一,使用@DS注解作用到類上。二,使用@DS注解作用到方法上。三,不使用注解,使用DynamicDataSourceContextHolder類在方法內(nèi)靈活切換不同數(shù)據(jù)源。 源碼: https://github.com/

    2024年01月20日
    瀏覽(25)
  • 解決IntelliJ IDEA在Mybatis 編寫mapper.xml SQL語句時不自動提示SQL語句和數(shù)據(jù)庫表的問題

    解決IntelliJ IDEA在Mybatis 編寫mapper.xml SQL語句時不自動提示SQL語句和數(shù)據(jù)庫表的問題

    在Idea中鏈接數(shù)據(jù)庫后,發(fā)現(xiàn)在MySql 的console中有SQL語句提示和數(shù)據(jù)表的提示,但是在編寫mapper.xml中發(fā)現(xiàn)并沒有提示,很煩,覺得效率下降。 在百度搜索后,發(fā)現(xiàn)了解決方法,出現(xiàn)了SQL語句的提示. 解決辦法: 按下alt + enter,選擇Language injection settings 然后選擇SQL即可,但是這種

    2024年02月16日
    瀏覽(28)
  • PostgreSQL 中的 JSON:徹底改變數(shù)據(jù)庫中的數(shù)據(jù)靈活性

    PostgreSQL 中的 JSON:徹底改變數(shù)據(jù)庫中的數(shù)據(jù)靈活性

    在這篇文章中,我們將介紹 PostgreSQL 對 JSON 對象的實現(xiàn)和處理方法。擁有一些 Linux、Postgres 和 JSON 方面的經(jīng)驗是必要的,因為我們不僅要介紹這些新功能,還要介紹如何實現(xiàn)它們。 本文使用在 Ubuntu 23.04 上運行的 PostgreSQL 16(開發(fā)版)編寫 。首先,我將簡要回顧一下 JSON 的背

    2024年01月19日
    瀏覽(27)
  • 簡單易用,靈活強大:用SQLAlchemy實現(xiàn)Python操作數(shù)據(jù)庫

    什么是SQLAlchemy? SQLAlchemy是一個Python的SQL工具和ORM框架,可以通過Python代碼直接操作關(guān)系型數(shù)據(jù)庫,也可以使用ORM模型進行對象關(guān)系映射。它支持多種數(shù)據(jù)庫,并提供了強大的SQL表達式和查詢API。 SQLAlchemy可以分為兩個部分:Core和ORM。 Core:提供了底層的SQL表達式和查詢API,

    2024年02月04日
    瀏覽(24)
  • 為業(yè)務(wù)數(shù)據(jù)庫注入低代碼智能:提高開發(fā)效率與靈活性的關(guān)鍵實踐

    為業(yè)務(wù)數(shù)據(jù)庫注入低代碼智能:提高開發(fā)效率與靈活性的關(guān)鍵實踐

    隨著公司試圖減少工作量并讓他們的業(yè)務(wù)上線,很明顯,大多數(shù)產(chǎn)品創(chuàng)意和功能需求都可以通過以最少的手動編碼構(gòu)建的可立即運行但可定制的應(yīng)用程序進行分類。借助迎合公民開發(fā)人員的低代碼開發(fā)平臺,低代碼開發(fā)成為過度勞累的 IT 部門新的具有成本效益的速贏方法。

    2024年02月20日
    瀏覽(20)
  • 使用矢量數(shù)據(jù)庫打造全新的搜索引擎

    在技術(shù)層面上,矢量數(shù)據(jù)庫采用了一種名為“矢量索引”的技術(shù),這是一種組織和搜索矢量數(shù)據(jù)的方法,可以快速找到相似矢量。其中關(guān)鍵的一環(huán)是“距離函數(shù)”的概念,它可以衡量兩個矢量的相似程度。 矢量數(shù)據(jù)庫是專門設(shè)計用來高效處理矢量數(shù)據(jù)的數(shù)據(jù)庫。什么是矢量數(shù)

    2024年02月14日
    瀏覽(24)
  • MyBatis的#{}和${}:安全與靈活并存的SQL之道

    MyBatis的#{}和${}:安全與靈活并存的SQL之道

    MyBatis是一款廣泛使用的Java持久化框架,提供了強大的SQL映射和數(shù)據(jù)庫操作功能。在編寫MyBatis的SQL語句時,我們經(jīng)常會遇到#{}和${}兩種不同的占位符語法。本文將詳細解析#{}和${}的區(qū)別以及它們在MyBatis中的應(yīng)用場景,幫助開發(fā)者更好地理解和使用MyBatis。 #{} 安全的預(yù)編譯占位

    2024年04月08日
    瀏覽(20)
  • Redis的速度不夠用?為什么你應(yīng)該考慮使用 KeyDB,一個更快、更強大、更靈活的開源數(shù)據(jù)庫

    Redis的速度不夠用?為什么你應(yīng)該考慮使用 KeyDB,一個更快、更強大、更靈活的開源數(shù)據(jù)庫

    你是否正在使用?Redis?作為您的數(shù)據(jù)結(jié)構(gòu)存儲,享受它的高性能、高可用的特性?如果是這樣,那么你可能會對?KeyDB?感興趣。 KeyDB?一個由?Snap?提供支持、專為擴展而構(gòu)建的開源數(shù)據(jù)庫。它是?Redis?的高性能分支,專注于多線程、內(nèi)存效率和高吞吐量。KeyDB?采用?MVCC?體系

    2024年02月08日
    瀏覽(32)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包