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

【MyBatis】四、MyBatis中的動(dòng)態(tài)SQL標(biāo)簽

這篇具有很好參考價(jià)值的文章主要介紹了【MyBatis】四、MyBatis中的動(dòng)態(tài)SQL標(biāo)簽。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

動(dòng)態(tài)SQL

動(dòng)態(tài)SQL語句是動(dòng)態(tài)的拼接Mybatis中SQL語句的情況,可以動(dòng)態(tài)的在Mybatis中使用SQL

if語句

if語句的xml文件:

<!--    List<Emp> getEmpByCondition(Emp emp);-->
    <select id="getEmpByCondition" resultType="Emp">
        select * from t_emp where 1 = 1
        <if test="empName != null and empName != ''">
            emp_name = #{empName}
        </if>
        <if test="sex != null and sex != ''">
            and sex = #{sex}
        </if>
        <if test="age != null and age != ''">
            and age = #{age}
        </if>
        <if test="email != null and email != ''">
            and email = #{email}
        </if>
    </select>

傳入對(duì)象來進(jìn)行調(diào)用:

    @Test
    public void test() {
        SqlSession sqlSession = SqlSessionUtils.getSqlSession();
        DynamicSQLMapper mapper = sqlSession.getMapper(DynamicSQLMapper.class);
        List<Emp> empList = mapper.getEmpByCondition(new Emp(null, "", 23, "男", "123@qq.com", null));
        System.out.println(empList);
    }

WHERE語句

where標(biāo)簽中的and會(huì)被自動(dòng)去掉,并且若沒有合適的內(nèi)容,則不會(huì)添加where關(guān)鍵字

注意:where標(biāo)簽只能去掉條件前的and、五福去掉條件后的and

    <select id="getEmpByCondition" resultType="Emp">
        select * from t_emp
        <where>
            <if test="empName != null and empName != ''">
                emp_name = #{empName}
            </if>
            <if test="sex != null and sex != ''">
                and sex = #{sex}
            </if>
            <if test="age != null and age != ''">
                and age = #{age}
            </if>
            <if test="email != null and email != ''">
                and email = #{email}
            </if>
        </where>
    </select>

trim標(biāo)簽

trim標(biāo)簽會(huì)在其內(nèi)容中沒有合適的內(nèi)容時(shí)不添加其內(nèi)容,若trim標(biāo)簽內(nèi)有內(nèi)容時(shí),則會(huì)添加這個(gè)內(nèi)容

<!--    如果trim中的if有一個(gè)成立,就會(huì)把where添加進(jìn)去,如果if語句后沒有語句,則會(huì)將末尾的and或or去掉-->
    <select id="getEmpByCondition" resultType="Emp">
        select * from t_emp
        <trim prefix="where" suffixOverrides="and|or">
            <if test="empName != null and empName != ''">
                emp_name = #{empName} and
            </if>
            <if test="sex != null and sex != ''">
                sex = #{sex} or
            </if>
            <if test="age != null and age != ''">
                age = #{age} and
            </if>
            <if test="email != null and email != ''">
                email = #{email}
            </if>
        </trim>
    </select>

choose、when、otherwise

choose是when和otherwise的父標(biāo)簽,when和otherwise要寫在choose中,相當(dāng)于編程語言中的if…else…if…else…

<!--    List<Emp> getEmpByChoose(Emp emp);-->
    <select id="getEmpByChoose" resultType="Emp">
        select * from t_emp
        <where>
            <choose>
                <when test="empName != null and empName != ''">
                    emp_name = #{empName}
                </when>
                 <when test="sex != null and sex != ''">
                     sex = #{sex}
                 </when>
                <otherwise>
                    did = 1
                </otherwise>
            </choose>
        </where>
    </select>

注意這里when至少有一個(gè)、otherwise至多有一個(gè),也可以沒有

foreach

通過數(shù)組實(shí)現(xiàn)批量刪除

mapper接口:

    /**
     * 通過數(shù)組實(shí)現(xiàn)批量刪除(形參傳入數(shù)組)
     */
    int deleteMoreByArray(@Param("eids") Integer[] eids);

xml:

<!--    int deleteMoreByArray(Integer[] eids);-->
<!--    foreach標(biāo)簽中,collection代表要遍歷的數(shù)組名,item代表每次遍歷得到的數(shù)據(jù),separator代表每個(gè)數(shù)據(jù)之間的分隔,open
代表遍歷前添加,close代表在遍歷之后添加-->
    <delete id="deleteMoreByArray">
        DELETE from t_emp where eid in
            <foreach collection="eids" item="eid" separator="," open="(" close=")">
                #{eid}
            </foreach>
    </delete>

xml的第二種寫法:

    <delete id="deleteMoreByArray">
        delete from t_emp where
        <foreach collection="eids" item="eid" separator="or">
            eid = #{eid}
        </foreach>
    </delete>

通過集合實(shí)現(xiàn)批量添加

建立接口:

    /**
     * 通過list實(shí)現(xiàn)批量添加
     */
    int insertMoreByList(@Param("emps") List<Emp> list);

建立xml:

<!--    int insertMoreByList(List<Emp> list);-->
    <insert id="insertMoreByList">
        insert into t_emp values
        <foreach collection="emps" item="emp" separator=",">
            (null, #{emp.empName}, #{emp.age}, #{emp.sex}, #{emp.email}, null)
        </foreach>
    </insert>

sql標(biāo)簽

sql標(biāo)簽用來將常用的一些字段記錄,下次在有這些字段出現(xiàn)時(shí)可以簡易的替換這些字段:

使用include標(biāo)簽來引用定義的sql片段文章來源地址http://www.zghlxwxcb.cn/news/detail-707025.html

    <sql id="empColumn">eid, emp_name, age, sex, email</sql>
    
    <select id="getEmpByConditionOne" resultType="Emp">
        select <include refid="empColumn"></include> from t_emp
    </select>

到了這里,關(guān)于【MyBatis】四、MyBatis中的動(dòng)態(tài)SQL標(biāo)簽的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • MyBatis 動(dòng)態(tài)SQL的標(biāo)簽有哪些?如何使用?

    MyBatis 動(dòng)態(tài)SQL的標(biāo)簽有哪些?如何使用?

    目錄 1. MyBatis 動(dòng)態(tài)SQL標(biāo)簽有什么用? 2. if 標(biāo)簽 3. where 標(biāo)簽 4. trim 標(biāo)簽 5. choose,when,otherwise 6. foreach 1. MyBatis 動(dòng)態(tài)SQL標(biāo)簽有什么用? 我來說一個(gè)場(chǎng)景大家就明白了,如下圖,大家應(yīng)該在鐵路12306上買過火車票吧,可以看到,我們?cè)谶x票的時(shí)候可以對(duì)車做很多種選擇和篩選,系

    2024年02月11日
    瀏覽(49)
  • MyBatis 動(dòng)態(tài)SQL之<choose><when><o(jì)therwise>標(biāo)簽-

    MyBatis 動(dòng)態(tài)SQL之<choose><when><o(jì)therwise>標(biāo)簽-

    MyBatis 中動(dòng)態(tài)語句 choose-when-otherwise 類似于 Java 中的 switch-case-default 語句。由于 MyBatis 并沒有為 if 提供對(duì)應(yīng)的 else 標(biāo)簽,如果想要達(dá)到…… 的效果,可以借助 、、 來實(shí)現(xiàn)。 hoose 標(biāo)簽按順序判斷其內(nèi)部 when 標(biāo)簽中的判斷條件是否成立,如果有一個(gè)成立,則執(zhí)行相應(yīng)的 SQL 語句

    2024年02月09日
    瀏覽(25)
  • 數(shù)據(jù)庫操作不再困難,MyBatis動(dòng)態(tài)Sql標(biāo)簽解析

    數(shù)據(jù)庫操作不再困難,MyBatis動(dòng)態(tài)Sql標(biāo)簽解析

    MyBatis緩存原理 Mybatis的CachingExecutor與二級(jí)緩存 Mybatis plugin 的使用及原理 MyBatis四大組件Executor、StatementHandler、ParameterHandler、ResultSetHandler 詳解 MyBatis+Springboot 啟動(dòng)到SQL執(zhí)行全流程 使用MyBatis,或者M(jìn)yBatis-plus,有一項(xiàng)重要的開發(fā)技能就是寫動(dòng)態(tài)sql,動(dòng)態(tài)sql能幫我們省略很多復(fù)雜邏

    2024年02月12日
    瀏覽(34)
  • MyBatis動(dòng)態(tài)sql之批量修改、批量新增(使用foreach標(biāo)簽的一條sql語句解決)

    ????????批量新增和批量修改在業(yè)務(wù)中是很常見的,一條sql訪問數(shù)據(jù)庫和通過代碼循環(huán)體中循環(huán)訪問數(shù)據(jù)庫做單個(gè)數(shù)據(jù)新增修改相比較下:一條sql訪問數(shù)據(jù)庫性能上明顯提升,代碼且簡潔明了 1、Mapper.java中 說明: 參數(shù)是list ?2、Mapper.xml中 說明: 通過trim標(biāo)簽拼接前后綴和

    2024年02月10日
    瀏覽(22)
  • MyBatis 中的動(dòng)態(tài) SQL 是什么? 如何使用動(dòng)態(tài) SQL?

    在 MyBatis 中,動(dòng)態(tài) SQL 是指能夠根據(jù)條件動(dòng)態(tài)生成 SQL 語句的功能。通過使用動(dòng)態(tài) SQL,可以根據(jù)不同的條件生成不同的 SQL 語句,從而實(shí)現(xiàn)靈活的查詢和操作。 條件判斷:通過 , , , 標(biāo)簽實(shí)現(xiàn) SQL 語句中的條件邏輯,根據(jù)傳入?yún)?shù)的值來決定是否包含某一部分 SQL 語句。 循環(huán)遍

    2024年04月15日
    瀏覽(22)
  • MyBatis的代理開發(fā)方式、動(dòng)態(tài)sql語句和typeHandlers和plugins標(biāo)簽實(shí)戰(zhàn)

    MyBatis的代理開發(fā)方式、動(dòng)態(tài)sql語句和typeHandlers和plugins標(biāo)簽實(shí)戰(zhàn)

    接上篇博客: MyBatis基礎(chǔ)知識(shí)和快速入門、MyBatis核心配置文件講解,本文繼續(xù)講解MyBatis動(dòng)態(tài)SQL語句、typeHandlers和plugins標(biāo)簽。 傳統(tǒng)開發(fā)方式 編寫UserDao接口 編寫UserDaoImpl實(shí)現(xiàn) mapper文件 測(cè)試傳統(tǒng)方式 代理開發(fā)方式 代理開發(fā)方式介紹 采用 Mybatis 的代理開發(fā)方式實(shí)現(xiàn) DAO 層的開發(fā)

    2023年04月27日
    瀏覽(21)
  • 【Spring 篇】深入探討MyBatis映射文件中的動(dòng)態(tài)SQL

    【Spring 篇】深入探討MyBatis映射文件中的動(dòng)態(tài)SQL

    MyBatis,這個(gè)名字在Java開發(fā)者的世界中猶如一道光芒,照亮著持久層操作的道路。而在MyBatis的映射文件中,動(dòng)態(tài)SQL則是一個(gè)讓人愛-hate的存在。有時(shí)候,你感嘆它的靈活性,有時(shí)候,你可能會(huì)為它的繁瑣而頭痛。但別擔(dān)心,我們將在本文中一起揭開動(dòng)態(tài)SQL的神秘面紗,帶你領(lǐng)

    2024年01月24日
    瀏覽(36)
  • MyBatis XML 映射文件中的 SQL 語句可以分為動(dòng)態(tài)語句和靜態(tài)語句

    目錄 靜態(tài)查詢: 動(dòng)態(tài)查詢: 靜態(tài)更新: 動(dòng)態(tài)更新: 靜態(tài)刪除: 動(dòng)態(tài)刪除: 動(dòng)態(tài)語句和靜態(tài)語句在 MyBatis 中的作用如下: 靜態(tài)查詢: 靜態(tài)查詢是指在 SQL 語句中執(zhí)行固定的查詢操作,查詢的條件和內(nèi)容是預(yù)先確定的,不會(huì)隨著用戶輸入或其他條件的改變而改變。以下是一

    2024年01月18日
    瀏覽(35)
  • 在Mybatis中寫動(dòng)態(tài)sql這些標(biāo)簽:if、where、set、trim、foreach、choose的作用是什么,怎么用?

    在 MyBatis 中,您可以使用動(dòng)態(tài) SQL 標(biāo)簽來構(gòu)建靈活的 SQL 查詢,以根據(jù)不同的條件生成不同的查詢語句。以下是這些標(biāo)簽的作用和用法: 1. **`if` 標(biāo)簽:** 用于根據(jù)某個(gè)條件動(dòng)態(tài)地包含或排除 SQL 片段,test:可以寫條件。 ? ?示例用法: ? ? ? ?```xml ? ?select id=\\\"getUserList\\\" param

    2024年02月11日
    瀏覽(38)
  • mybatis的<sql>標(biāo)簽使用

    記錄 :421 場(chǎng)景 :使用MyBatis的sql/sql標(biāo)簽元素,把重復(fù)的SQL語句集中到sql標(biāo)簽,使用標(biāo)簽的id屬性指定唯一標(biāo)識(shí)。在insertupdatedeleteselect等標(biāo)簽中使用include/include標(biāo)簽引用sql/sql標(biāo)簽。 版本 :JDK 1.8,Spring?Boot 2.6.3,mybatis-3.5.9。 1.基礎(chǔ)知識(shí) 1.1MyBatis的標(biāo)簽 (1)查看MyBatis支持的標(biāo)簽 地址

    2024年01月22日
    瀏覽(25)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包