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

MyBatis的使用(XML映射文件)

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

MyBatis的使用(XML映射文件)

MyBatis基于注解開發(fā)簡單便捷,但是弊端是失去SQL語句的靈活性,不能根據(jù)實際情況產(chǎn)生不同的SQL語句

MyBatis除了支持注解開發(fā)以外,還支持一種開發(fā)方式:XML映射文件,將SQL語句寫到XML映射文件中,基于更多種的選擇可以讓SQL變得更加靈活

1.開發(fā)方式

1.和基于注解開發(fā)方式一樣,有映射類/編寫配置文件/編寫Mapper持久層接口

2.將方法執(zhí)行時候要運行的SQL語句放到XML文件中進行編寫,提高靈活性

2.三重綁定
  • 接口與XML文件的綁定關(guān)系,在XML映射文件的namespace中聲明綁定的接口的全類名

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper
            PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="com.itheima.mapper.EmpMapper">
    
    </mapper>
    

    必須還要在配置文件中聲明xml文件位置,MyBatis才可以掃描到這些文件,掃描到與接口建立綁定關(guān)系

    mybatis.mapper-locations=classpath:mappers/*.xml
    
  • 接口中的方法與XML文件中標(biāo)簽的綁定關(guān)系

    如果接口中有一個方法,XML文件中就必須有對應(yīng)的標(biāo)簽保存該方法對應(yīng)的SQL語句

    根據(jù)方法功能的不同,提供四種標(biāo)簽:< select >、< update >、< delete >、< insert >

    public void deleteEmp(@Param("id") Integer id);
    

    標(biāo)簽必須給出id屬性,屬性就是對應(yīng)的方法名稱

    <delete id="deleteEmp">
        DELETE FROM emp WHERE id = #{id}
    </delete>
    
  • 查詢語句的返回值類型與XML文件中標(biāo)簽屬性的綁定關(guān)系

    如果執(zhí)行的是DQL語句,< select >標(biāo)簽中除了要生命id為方法名之外,還需要聲明一個屬性resultType值為封裝結(jié)果的全類名

    public Emp selectEmpById(@Param("id") Integer id);
    
    <select id="selectEmpById" resultType="com.itheima.entity.Emp">
        SELECT * FROM emp WHERE id = #{id}
    </select>
    
3.動態(tài)SQL概述

可以隨著條件的改變隨之發(fā)生改變的SQL語句就是動態(tài)SQL,在MyBatis中只有XML映射文件的方式支持動態(tài)SQL

  • 動態(tài)SQL使用-IF

    < if >標(biāo)簽的核心功能對條件進行判斷,當(dāng)條件為true,則標(biāo)簽中的內(nèi)容參與SQL拼接,否則不參與

    if標(biāo)簽中有一個核心屬性test,基于test傳遞條件可以進行判斷

    (1)在test條件中可以直接獲取本次參數(shù)的內(nèi)容并且不需要加#{}

    (2)test條件中可以基于=、!=、>、>=、<、<=對數(shù)據(jù)進行判斷,并且可以基于and或者or進行多條件連接

    <if test="empQuery.name != null and empQuery.name != ''">
    	name LIKE CONCAT('%', #{empQuery.name}, '%')
    </if>
    

    **如果有多個test條件,那么除了第一個之外后續(xù)的條件需要加 前AND **

    <if test="empQuery.name != null and empQuery.name != ''">
        name LIKE CONCAT('%', #{empQuery.name}, '%')
    </if>
    <if test="empQuery.gender != null">
        AND gender = #{empQuery.gender} 
    </if>
    
  • 動態(tài)SQL使用-WHERE

    如果if經(jīng)過了判斷第一個條件前包含AND,基于where標(biāo)簽進行包裹可以自動將前AND去掉

    如果沒有任何一個if滿足,基于where標(biāo)簽進行包裹可以不在SQL中拼接WHERE

    SELECT *
    FROM emp
    <where>
        <if test="empQuery.name != null and empQuery.name != ''">
            name LIKE CONCAT('%', #{empQuery.name}, '%')
        </if>
        <if test="empQuery.gender != null">
            AND gender = #{empQuery.gender}  <!-- 注意:多個條件判斷除了第一個之外剩余條件需要前AND -->
        </if>
        <if test="empQuery.begin != null">
            AND entrydate >= #{empQuery.begin}
        </if>
        <if test="empQuery.end != null">
            AND entrydate &lt;= #{empQuery.end} <!-- <在XML中有特殊含義 需要被轉(zhuǎn)義字符代替 -->
        </if>
    </where>
    
  • 動態(tài)SQL使用-SET

    如果if經(jīng)過了判斷第一個更新字段包含前,,基于set標(biāo)簽進行包裹可以自動將前逗號去掉

    UPDATE emp
    <set>
        <if test="emp.username != null and emp.username != ''">
            username = #{emp.username}
        </if>
        <if test="emp.password != null and emp.password != ''">
            , password = #{emp.password}
        </if>
        <if test="emp.name != null and emp.name != ''">
            , name = #{emp.name}
        </if>
        <if test="emp.gender != null">
            , gender = #{emp.gender}
        </if>
    </set>
    WHERE id = #{emp.id}
    
  • 動態(tài)SQL使用-FOREACH

    foreach標(biāo)簽可以用于遍歷接口中的集合/數(shù)組參數(shù),在SQL語句中進行動態(tài)的拼接

    //基于集合刪除員工信息
    public void batchDelete(@Param("deleteIds") List<Integer> deleteIds);
    
    <delete id="batchDelete">
        DELETE FROM emp WHERE id IN
        <foreach collection="deleteIds" item="deleteId" separator="," open="(" close=")">
            #{deleteId}
        </foreach>
    </delete>
    
  • 動態(tài)SQL使用-SQL

    SQL片段標(biāo)簽可以將XML文件重復(fù)的內(nèi)容抽取出來,并且可以在多處復(fù)用

    當(dāng)要使用指定SQL片段的內(nèi)容進行拼接時,使用include標(biāo)簽文章來源地址http://www.zghlxwxcb.cn/news/detail-716349.html

    <!-- SQL片段可以抽取XML文件中重復(fù)的內(nèi)容 -->
    <sql id="BASE_COLUMN">
        id, username, password, name, gender, image, job, entrydate, dept_id
    </sql>
    
    <select id="selectEmpById" resultType="com.itheima.entity.Emp">
        SELECT
        <include refid="BASE_COLUMN">
        </include>
        FROM emp
        WHERE id = #{id}
    </select>
    
    <select id="selectEmpListByCondition" resultType="com.itheima.entity.Emp">
        SELECT
        <include refid="BASE_COLUMN">
        </include>
        FROM emp
    </select>
    

到了這里,關(guān)于MyBatis的使用(XML映射文件)的文章就介紹完了。如果您還想了解更多內(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)文章

  • Spring Boot入門(10):Mybatis之XML映射文件>、<=等特殊符號使用 | 保姆級教程

    Spring Boot入門(10):Mybatis之XML映射文件>、<=等特殊符號使用 | 保姆級教程

    ? ? ? ? 在Mybatis的XML映射文件中,我們經(jīng)常需要使用一些特殊符號來完成SQL語句的拼接,比如小于號“”、小于等于號“=”等。然而,由于這些符號在XML中有特殊的含義,因此直接在映射文件中使用可能會導(dǎo)致編譯錯誤或者運行時異常。那么,如何才能正確地使用這些特殊

    2024年02月11日
    瀏覽(38)
  • mybatis(mybatis-plus)映射文件(XML文件)中特殊字符轉(zhuǎn)義

    XML 文件在解析時會將五種特殊字符進行轉(zhuǎn)義,當(dāng)不希望語法被轉(zhuǎn)義時,就需要進行特別處理,參考HTML字符轉(zhuǎn)義規(guī)范Myabtis 中五個特殊字符 原始符號 符號含義 大于 小于 and \\\" 英文雙引號 ’ 英文單引號 原始符號 轉(zhuǎn)義字符 gt lt amp \\\" quot ’ apos

    2024年02月10日
    瀏覽(35)
  • Spring Boot入門(10):Mybatis之XML映射文件中如何使用特殊符號?揭秘<、<=等符號的正確使用方法!

    Spring Boot入門(10):Mybatis之XML映射文件中如何使用特殊符號?揭秘<、<=等符號的正確使用方法!

    ? ? ? ? 在Mybatis的XML映射文件中,我們經(jīng)常需要使用一些特殊符號來完成SQL語句的拼接,比如小于號“”、小于等于號“=”等。然而,由于這些符號在XML中有特殊的含義,因此直接在映射文件中使用可能會導(dǎo)致編譯錯誤或者運行時異常。那么,如何才能正確地使用這些特殊

    2024年02月09日
    瀏覽(32)
  • MyBatis Plus Mapper.xml映射文件常用標(biāo)簽<if>、<foreach>、#{}、${}等

    一、判斷 Integer、Long?等常數(shù)類參數(shù) 注意:判斷常數(shù)類參數(shù),只能判斷 != null,不能判斷 != \\\'\\\'?否則判斷不會生效 二、判斷 String?字符串類參數(shù) 注意:判斷字符串類參數(shù)可以判斷?!= \\\'\\\' 三、判斷參數(shù)值與指定的值,是否相等或不相等 注意: 1、判斷 Integer、Long?等常數(shù)類型等于

    2024年02月09日
    瀏覽(21)
  • MyBatis XML 映射文件中的 SQL 語句可以分為動態(tài)語句和靜態(tài)語句

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

    2024年01月18日
    瀏覽(35)
  • Mybatis之簡介、使用操作(安裝、XML、SqlSession、映射的SQL語句、命名空間、作用域和生命周期)

    學(xué)習(xí)的最大理由是想擺脫平庸,早一天就多一份人生的精彩;遲一天就多一天平庸的困擾。各位小伙伴,如果您: 想系統(tǒng)/深入學(xué)習(xí)某技術(shù)知識點… 一個人摸索學(xué)習(xí)很難堅持,想組團高效學(xué)習(xí)… 想寫博客但無從下手,急需寫作干貨注入能量… 熱愛寫作,愿意讓自己成為更好

    2024年02月04日
    瀏覽(24)
  • MyBatis XML映射處理CLOB和BLOB類型

    Mybatis的MapperXML映射文件應(yīng)該處理數(shù)據(jù)庫字段類型為CLOB和BLOB類型的數(shù)據(jù)呢?首先我們先看下CLOB和BLOB這兩種數(shù)據(jù)類型的介紹。 使用Mybatis時涉及到兩種特殊類型的處理,分別是Blob(Binary Large Object)和Clob(Character Large Object)。Blob表示二進制大對象字段,而Clob則表示大字符對象

    2024年02月12日
    瀏覽(13)
  • springboot+maven插件調(diào)用mybatis generator自動生成對應(yīng)的mybatis.xml文件和java類

    springboot+maven插件調(diào)用mybatis generator自動生成對應(yīng)的mybatis.xml文件和java類

    mybatis最繁瑣的事就是sql語句和實體類,sql語句寫在java文件里很難看,字段多的表一開始寫感覺阻力很大,沒有耐心,自動生成便成了最稱心的做法。自動生成xml文件,dao接口,實體類,雖一直感覺不太優(yōu)雅,但省去了很多麻煩,當(dāng)表增加或修改字段的時候重新生成便輕松搞

    2024年02月14日
    瀏覽(24)
  • Mybatis—XML配置文件、動態(tài)SQL

    Mybatis—XML配置文件、動態(tài)SQL

    學(xué)習(xí)完Mybatis的基本操作之后,繼續(xù)學(xué)習(xí)Mybatis—XML配置文件、動態(tài)SQL。 Mybatis的開發(fā)有兩種方式: 注解 XML 之前學(xué)習(xí)的基本操作都是基于注解開發(fā)。使用Mybatis的注解方式,主要是來完成一些簡單的增刪改查功能。如果需要實現(xiàn)復(fù)雜的SQL功能,建議使用XML來配置映射語句,也就

    2024年02月06日
    瀏覽(21)
  • Mybatis|mapper配置文件xml位置

    Mybatis|mapper配置文件xml位置

    在核心配置文件mybatis-config.xml中設(shè)置映射文件位置 application.yml文件中添加配置: mybatis案例中和springboot中都是一樣的,只要目錄名和包名相同 需要在pom.xml中添加如下內(nèi)容 越努力,越幸運! codefishyyf與你一起努力!

    2024年02月06日
    瀏覽(25)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包