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

MyBatis查詢數(shù)據(jù)庫(4)

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

前言??

??????SSM專欄更新中,各位大佬覺得寫得不錯,支持一下,感謝了!??????

Spring + Spring MVC + MyBatis_冷兮雪的博客-CSDN博客

終于到了MyBatis最后一篇,這篇講的是動態(tài)SQL的使用。

復雜情況:動態(tài)SQL使用??

動態(tài) SQL?是Mybatis的強大特性之?,能夠完成不同條件下不同的 SQL?拼接。 可以參考官方文檔:mybatis – MyBatis 3 | 動態(tài) SQL

一、<if>標簽??

在注冊用戶的時候,可能會有這樣?個問題,有的信息是必填,有的是選填,那如果在添加?戶的時候有不確定的字段傳入,程序應該 如何實現(xiàn)呢?

這個時候就需要使用動態(tài)標簽 <if> 來判斷了,比如添加的時候性別 sex 為非必填字段,具體實現(xiàn)如下:

<insert id="insert">
        insert into user(
        username,
        password,
        <if test="sex != null">
            sex,
        </if>
        birthday,
        head
        ) values (
        #{username},
        #{password},
        <if test="sex != null">
            #{sex},
        </if>
        #{birthday},
        #{head}
        )
    </insert>

需要注意 test 中的 sex,是傳入對象中的屬性,不是數(shù)據(jù)庫字段。而且if標簽都是成對出現(xiàn)的

二、<trim>標簽??

之前的插入用戶功能,只是有?個 sex 字段可能是選填項,如果所有字段都是非必填項,就考慮使用<trim>標簽結(jié)合<if>標簽,對多個字段都采取動態(tài)生成的方式。

<trim>標簽中有如下屬性:

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

調(diào)整 UserMapper.xml 的插入語句為:

    <insert id="insert">
        insert into user
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="username != null">
                username,
            </if>
            <if test="password != null">
                password,
            </if>
            <if test="sex != null">
                sex,
            </if>
            <if test="birthday != null">
                birthday,
            </if>
            <if test="head != null">
                head,
            </if>
            <if test="createTime != null">
                create_time,
            </if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            <if test="username != null">
                #{username},
            </if>
            <if test="password != null">
                #{password},
            </if>
            <if test="sex != null">
                #{sex},
            </if>
            <if test="birthday != null">
                #{birthday},
            </if>
            <if test="head != null">
                #{head},
            </if>
            <if test="createTime != null">
                #{createTime},
            </if>
        </trim>
    </insert>

在以上 sql 動態(tài)解析時,會將第?個 <trim> 部分做如下處理:

  • 基于 prefix 配置,前綴部分加上 (
  • 基于 suffix 配置,后綴部分加上 )
  • 多個 <if>組織的語句都以 , 結(jié)尾,在最后拼接好的字符串還會以 , 結(jié)尾,會基于 suffixO verrides 配置去掉最后?個 ,
  • 注意 <if test=“createTime != null”> 中的 createTime 是傳入對象的屬性,不是數(shù)據(jù)庫字段

三、<where>標簽??

傳入的用戶對象,根據(jù)屬性做 where 條件查詢,用戶對象中屬性不為 null 的,都為查詢條件。如user.username 為 "a",則查詢條件為 where username="a":

UserMapper:

List<User> selectByCondition(User user);

UserMapper.xml:

 <select id="selectByCondition" parameterType="com.example.ssmdemo1.entity.Userinfo" resultMap="baseMap">
        select id, username, password, nickname, sex, birthday, head, create_time from user
        <where>
            <if test="username != null">
                and username=#{username}
            </if>
            <if test="password != null">
                and password=#{password}
            </if>
            <if test="sex != null">
                and sex=#{sex}
            </if>
            <if test="birthday != null">
                and birthday=#{birthday}
            </if>
            <if test="head != null">
                and head=#{head}
            </if>
            <if test="createTime != null">
                and create_time=#{createTime}
            </if>
        </where>
    </select>
以上<where>標簽也可以使用<trim prefix="where" prefixOverrides="and"> 替換,中間的if標簽代碼不需要變。

四、<set>標簽??

根據(jù)傳入的用戶對象屬性來更新用戶數(shù)據(jù),可以使用<set>標簽來指定動態(tài)內(nèi)容。

UserMapper 接口中修改用戶方法:根據(jù)傳入的用戶 id 屬性,修改其他不為 null 的屬性:

int updateById(User user); 

UserMapper.xml 中添加更新用戶?SQL:

<update id="updateById" parameterType="com.example.ssmdemo1.entity.Userinfo">
        update user
        <set>
            <if test="username != null">
                username=#{username},
            </if>
            <if test="password != null">
                password=#{password},
            </if>
            <if test="sex != null">
                sex=#{sex},
            </if>
            <if test="birthday != null">
                birthday=#{birthday},
            </if>
            <if test="head != null">
                head=#{head},
            </if>
            <if test="createTime != null">
                create_time=#{createTime},
            </if>
        </set>
        where id=#{id}
    </update>

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

五、<foreach>標簽??

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

  • collection:綁定方法參數(shù)中的集合,如 List,Set,Map或數(shù)組對象
  • item:遍歷時的每?個對象
  • open:語句塊開頭的字符串
  • close:語句塊結(jié)束的字符串
  • separator:每次遍歷之間間隔的字符串

示例:根據(jù)多個文章 id 來刪除文章數(shù)據(jù)。

ArticleMapper 中新增接口方法:

int deleteByIds(List<Integer> ids);

ArticleMapper.xml 中新增刪除 SQL:

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

單元測試代碼,刪除id為5和6的用戶:

@Test
    void deleteByIds() {
        List<Integer> ids=new ArrayList<>();
        ids.add(5);
        ids.add(6);
        int result=userMapper.deleteByIds(ids);
        System.out.println("刪除:"+result);
    }

六、choose-when-otherwise??

類似于Java中的switch語句,根據(jù)不同條件選擇不同的SQL片段。

<select id="getUserList" resultType="User">
  SELECT * FROM users
  <where>
    <choose>
      <when test="status != null">
        AND status = #{status}
      </when>
      <when test="name != null and name != ''">
        AND name = #{name}
      </when>
      <otherwise>
        AND active = 1
      </otherwise>
    </choose>
  </where>
</select>

動態(tài)SQL是MyBatis的一個重要特性,它允許你在SQL語句中根據(jù)條件動態(tài)地添加、修改或刪除語句片段,以便更靈活地構(gòu)建SQL查詢和更新操作。

上面這些示例只是MyBatis動態(tài)SQL的一小部分用法。你可以根據(jù)自己的需求和情況,結(jié)合使用這些特性來構(gòu)建更靈活、可維護的數(shù)據(jù)庫操作語句。記得閱讀MyBatis的官方文檔以深入了解動態(tài)SQL的更多用法和細節(jié)。

MyBatis查詢數(shù)據(jù)庫(4),Spring + Spring MVC + MyBatis,mybatis,java,開發(fā)語言,spring,spring boot,后端,數(shù)據(jù)庫文章來源地址http://www.zghlxwxcb.cn/news/detail-627986.html

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

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

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

相關(guān)文章

  • MyBatis查詢數(shù)據(jù)庫(4)

    MyBatis查詢數(shù)據(jù)庫(4)

    ??????SSM專欄更新中,各位大佬覺得寫得不錯,支持一下,感謝了!?????? Spring + Spring MVC + MyBatis_冷兮雪的博客-CSDN博客 終于到了MyBatis最后一篇,這篇講的是 動態(tài)SQL的使用。 動態(tài) SQL?是Mybatis的強大特性之?,能夠完成不同條件下不同的 SQL?拼接。 可以參考官

    2024年02月14日
    瀏覽(39)
  • MyBatis查詢數(shù)據(jù)庫(3)

    MyBatis查詢數(shù)據(jù)庫(3)

    ??????SSM專欄更新中,各位大佬覺得寫得不錯,支持一下,感謝了!?????? Spring + Spring MVC + MyBatis_冷兮雪的博客-CSDN博客 前面我們講解了MyBatis增刪改查基本操作,下面我們來深入了解MyBatis其中不同和需要注意的地方。 下面我們來實現(xiàn)?下根據(jù)用戶 id 查詢用戶

    2024年02月14日
    瀏覽(27)
  • MyBatis查詢數(shù)據(jù)庫(2)

    MyBatis查詢數(shù)據(jù)庫(2)

    目錄 前言?? 一、增刪查改操作?? 1、查?? Ⅰ、mapper接口:?? Ⅱ、UserMapper.xml 查詢所有用戶的具體實現(xiàn) SQL:?? Ⅲ、進行單元測試?? 2、增、刪、改操作?? Ⅰ、增?? 添加用戶?? 添加用戶并且返回自增 id?? Ⅱ、改?? 根據(jù)id修改用戶名?? 開啟 MyBatis sql 日志打印?? Ⅲ、

    2024年02月16日
    瀏覽(21)
  • MyBatis 查詢數(shù)據(jù)庫、持久層框架簡介

    MyBatis 查詢數(shù)據(jù)庫、持久層框架簡介

    MyBatis是一款優(yōu)秀的持久層框架,支持自定義SQL、存儲過程以及高級映射。它通過簡單的XML或注解來配置和映射原始類型、接口和Java POJO為數(shù)據(jù)庫中的記錄。

    2024年02月12日
    瀏覽(16)
  • MyBatis查詢數(shù)據(jù)庫之一(概念+創(chuàng)建項目+基礎(chǔ)交互)

    MyBatis查詢數(shù)據(jù)庫之一(概念+創(chuàng)建項目+基礎(chǔ)交互)

    目錄 1.MyBatis是什么? 2.為什么學習MyBatis? 3. 怎么學 MyBatis 4.第?個MyBatis查詢 4.1 添加MyBatis框架支持 4.1.1老項目添加MyBatis 4.1.2 新項目添加MyBatis 4.2 配置連接字符串和MyBatis 4.2.1 配置連接字符串 4.2.2 配置 MyBatis 中的 XML 路徑 5. 使用 MyBatis 的操作模式操作數(shù)據(jù)庫 5.1 添加實體類

    2024年02月13日
    瀏覽(46)
  • 【Spring Boot】數(shù)據(jù)庫持久層框架MyBatis — MyBatis簡介

    本節(jié)首先會介紹什么是ORM、什么是MyBatis、MyBatis的特點以及核心概念,最后介紹MyBatis是如何啟動、如何加載配置文件的? ORM(Object Relational Mapping,對象關(guān)系映射)是為了解決面向?qū)ο笈c關(guān)系數(shù)據(jù)庫存在的互不匹配現(xiàn)象的一種技術(shù)。簡單地說,ORM通過使用描述對象和數(shù)據(jù)庫之

    2024年02月11日
    瀏覽(29)
  • MyBatis 查詢數(shù)據(jù)庫之二(增、刪、改、查操作)

    MyBatis 查詢數(shù)據(jù)庫之二(增、刪、改、查操作)

    目錄 1. 配置打印 MyBatis 執(zhí)行的SQL 2. 查詢操作 2.1 通過用戶 ID 查詢用戶信息、查詢所有用戶信息 (1) Mapper 接口 (2)UserMapper.xml 查詢所有用戶的具體實現(xiàn) SQL (3)進行單元測試 3. 增加操作 3.1 在 mapper(interface)里面添加增加方法的聲明 3.2 在 XMl 中添加 標簽和增加的 sql 代碼 3.3 生成

    2024年02月14日
    瀏覽(32)
  • 【Spring Boot】數(shù)據(jù)庫持久層框架MyBatis — Spring Boot構(gòu)建MyBatis應用程序

    Spring Boot是用于快速構(gòu)建Spring應用程序的框架。MyBatis是一種Java持久化框架,可以幫助開發(fā)人員輕松地管理數(shù)據(jù)庫。將Spring Boot與MyBatis結(jié)合使用可以使開發(fā)人員更容易地創(chuàng)建和管理數(shù)據(jù)庫應用程序。 以下是使用Spring Boot構(gòu)建MyBatis應用程序的步驟: 添加MyBatis依賴項:在項目的

    2024年02月10日
    瀏覽(29)
  • 【MyBatis學習】MyBatis操縱數(shù)據(jù)庫進行查詢操作 ?MyBatis與JDBC想比怎么樣,趕快與我一起探索吧 ! ! !

    【MyBatis學習】MyBatis操縱數(shù)據(jù)庫進行查詢操作 ?MyBatis與JDBC想比怎么樣,趕快與我一起探索吧 ! ! !

    前言: 大家好,我是 良辰丫 ,從今天開始我們就要進入MyBatis的學習了,請君與我一起操縱數(shù)據(jù)庫,MyBatis到底是什么呢?我們慢慢往下瞧! ! !?????? ??個人主頁:良辰針不戳 ??所屬專欄:javaEE進階篇之框架學習 ??勵志語句:生活也許會讓我們遍體鱗傷,但最終這些傷口會成為我

    2024年02月09日
    瀏覽(17)
  • Spring日志完結(jié)篇,MyBatis操作數(shù)據(jù)庫(入門)

    Spring日志完結(jié)篇,MyBatis操作數(shù)據(jù)庫(入門)

    目錄 Spring可以對日志進行分目錄打印 日志持久化(讓日志進行長期的保存) MyBatis操作數(shù)據(jù)庫(優(yōu)秀的持久層框架) MyBatis的寫法 開發(fā)規(guī)范: 單元測試的寫法 傳遞參數(shù) 他的意思是說spring相關(guān)只打印INFO級別的標準,但是他也能獲取到debug級別的日志 日志設(shè)置顏色(只能控制控制

    2024年02月04日
    瀏覽(44)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包