精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

速覽 MyBatis:關(guān)鍵功能與實(shí)踐技巧

開發(fā) 開發(fā)工具
MyBatis支持多種關(guān)系型數(shù)據(jù)庫,如?MySQL、Oracle、SQL Server等。開發(fā)人員可以使用相同的API來操作不同的數(shù)據(jù)庫,只需要更換相應(yīng)的數(shù)據(jù)庫驅(qū)動和配置即可,具有很高的數(shù)據(jù)庫兼容性和可移植性。

前言

MyBatis是一款功能強(qiáng)大的ORM框架,幫助開發(fā)者在Java程序中高效地與數(shù)據(jù)庫進(jìn)行交互。

功能特點(diǎn)

  • SQL映射靈活:MyBatis允許開發(fā)人員通過XML或注解的方式來配置SQL語句,將SQL語句與Java代碼分離,使得SQL的維護(hù)更加方便。同時,它提供了強(qiáng)大的動態(tài)SQL功能,能夠根據(jù)不同的條件動態(tài)生成SQL語句,滿足各種復(fù)雜的查詢需求。
  • 支持多種數(shù)據(jù)庫:MyBatis支持多種關(guān)系型數(shù)據(jù)庫,如 MySQL、Oracle、SQL Server等。開發(fā)人員可以使用相同的API來操作不同的數(shù)據(jù)庫,只需要更換相應(yīng)的數(shù)據(jù)庫驅(qū)動和配置即可,具有很高的數(shù)據(jù)庫兼容性和可移植性。
  • 對象關(guān)系映射(ORM):MyBatis實(shí)現(xiàn)了對象關(guān)系映射,能夠?qū)?shù)據(jù)庫中的表記錄映射為Java對象,方便在Java程序中進(jìn)行操作。它提供了靈活的映射配置方式,可以自定義對象與表之間的映射關(guān)系,包括字段的映射、關(guān)聯(lián)關(guān)系的處理等。
  • 性能優(yōu)化:MyBatis具有良好的性能表現(xiàn),它對SQL執(zhí)行進(jìn)行了優(yōu)化,例如緩存機(jī)制。MyBatis提供了一級緩存和二級緩存,一級緩存基于SqlSession級別,二級緩存可以在多個SqlSession之間共享,能夠有效減少數(shù)據(jù)庫的查詢次數(shù),提高系統(tǒng)性能。

使用方式

基本使用

動態(tài)SQL允許根據(jù)傳入的參數(shù)生成不同的SQL語句,避免了復(fù)雜條件下的SQL拼接問題。

<select id="selectUsersByCondition" resultType="User"> 
    SELECT * FROM users WHERE 1=1 
    <if test="username != null">AND username = #{username}</if>
    <if test="age != null">AND age = #{age}</if>
</select>

使用 foreach 實(shí)現(xiàn)批量操作

<foreach>循環(huán)容器:用于在SQL中循環(huán)處理集合或數(shù)組數(shù)據(jù),常用于IN條件。主要屬性包括:

  • item:集合元素迭代別名。
  • index:元素迭代索引。
  • collection:指定集合或數(shù)組,單參數(shù)List時為list,單參數(shù)數(shù)組時為array,多參數(shù)或單參數(shù)封裝為Map時,是對應(yīng)List或數(shù)組在Map中的鍵。
  • open、separator、close:定義循環(huán)內(nèi)容的起始、分隔和結(jié)束符號。
<select id="selectUsersByIds" resultType="User">
    select * FROM users
    where id in
    <foreach collection="ids" item="userid" index="index" open="(" separator="," close=")">
        #{userid}
    </foreach>
</select>

<insert id="insertUsersBatch" parameterType="java.util.List">
    INSERT INTO users (username, age, email)
    VALUES
    <foreach collection="userList" item="user" index="index" open="(" separator="),(" close=")">
        #{user.username}, #{user.age}, #{user.email}
    </foreach>
</insert>

?

實(shí)際使用中,避免集合超過1000,否則會提示java.sql.SQLSyntaxErrorException: ORA-01795: maximum number of expressions in a list is 1000

<select id="selectUsersByIds" resultType="User">
    select * FROM users
    where id in (
       <foreach collection="ids" item="userid" index="index">
        <!-- 解決 list中數(shù)據(jù)大于1K條的問題  -->
        <iftest="index != 0">
            <choose>
                <when test="index % 1000 == 999">
                    ) or id in (
                </when>
                <otherwise>,</otherwise>
            </choose>
        </if>
        #{userid}
    </foreach>
    )
</select>

choose、when、otherwise條件判斷

類似Javaswitch語句,按順序判斷<when>標(biāo)簽的test條件,滿足則執(zhí)行對應(yīng)SQL,都不滿足則執(zhí)行<otherwise>中的SQL。

<select id="getUserList_choose" resultType="User" parameterType="User">
    SELECT *
    FROM users u
    <where>
        <choose>
            <when test="username!=null and username!= ''">
                u.username LIKE CONCAT(CONCAT('%', #{username, jdbcType=VARCHAR}),'%')
            </when>
            <when test="age!= null">
                AND u.age = #{age, jdbcType=INTEGER}
            </when>
            <when test="email!= null and email!= ''">
                AND u.email = #{email, jdbcType=VARCHAR}
            </when>
            <otherwise>
            </otherwise>
        </choose>
    </where>
</select>

concat模糊查詢

通過concat函數(shù)實(shí)現(xiàn)模糊查詢,并結(jié)合<if>標(biāo)簽動態(tài)拼接SQL條件

<select id="queryById" resultType="User" parameterType="User">
    SELECT * from users
    <where>
        <if test="username!=null">
            username like concat('%',concat(#{username},'%'))
        </if>
    </where>
</select>

if標(biāo)簽

根據(jù)條件動態(tài)拼接SQL語句,常用于查詢

<select id="selectUsersByCondition" resultType="User" parameterType="User">
    SELECT * FROM users
    WHERE 1=1
    <iftest="username != null and username != ''">
        AND username = #{username}
    </if>
    <iftest="age != null">
        AND age = #{age}
    </if>
    <iftest="email != null and email != ''">
        AND email = #{email}
    </if>
</select>

但多個<if>WHERE中可能導(dǎo)致關(guān)鍵字多余錯誤。

if + where條件判斷

<where>標(biāo)簽可解決多個<if>WHERE中導(dǎo)致的關(guān)鍵字多余問題,自動添加或剔除WHERE及多余的AND、OR,避免手動添加 WHERE 1=1

<select id="selectUsersByCondition" resultType="User" parameterType="User">
    SELECT * FROM users
    <where>
        <iftest="username != null and username != ''">
            username = #{username}
        </if>
        <iftest="age != null">
            AND age = #{age}
        </if>
        <iftest="email != null and email != ''">
            AND email = #{email}
        </if>
    </where>
</select>

if + set條件更新

UPDATE語句中,<set>標(biāo)簽可動態(tài)配置SET關(guān)鍵字,剔除末尾多余逗號,避免因參數(shù)null導(dǎo)致的錯誤。

<update id="updateUserById">
    UPDATE users
    <set>
        <iftest="username != null and username != ''">
            username = #{username},
        </if>
        <iftest="age != null">
            age = #{age},
        </if>
        <iftest="email != null and email != ''">
            email = #{email},
        </if>
        <iftest="updateTime != null">
            update_time = #{updateTime},
        </if>
        <!-- 可根據(jù)需要添加更多字段 -->
    </set>
    WHERE userid = #{userid}
</update>

CASE WHEN

<select id="selectUserList" resultType="User">
    SELECT
        userid,
        username,
        age,
        status,
        CASE status
            WHEN 'ACTIVE' THEN '活躍'
            WHEN 'INACTIVE' THEN '非活躍'
            WHEN 'BLOCKED' THEN '已封禁'
            ELSE '未知狀態(tài)'
        END AS status_text
    FROM users
</select>

使用 resultMap 映射復(fù)雜結(jié)果

當(dāng)查詢返回的列與實(shí)體類的字段名稱不一致時,resultMap可以幫忙進(jìn)行映射。

<resultMap id="userResultMap" type="User">
    <id property="id" column="userid" />
    <result property="username" column="username" />
    <result property="age" column="age" />
</resultMap>


<select id="selectUsersByCondition" resultMap="userResultMap"> 
    SELECT * FROM users WHERE 1=1 
    <if test="username != null">AND username = #{username}</if>
    <if test="age != null">AND age = #{age}</if>
</select>

處理一對多關(guān)系

<resultMap id="userWithOrders" type="User">
    <id property="id" column="userid" />
    <result property="username" column="username" />
    <collection property="orders" ofType="Order">
        <id property="id" column="order_id" />
        <result property="amount" column="order_amount" />
    </collection>
</resultMap>

<select id="selectUserWithOrders" resultMap="userWithOrders"> 
    SELECT u.userid, u.username, o.order_id, o.order_amount FROM users 
    u LEFT JOIN orders o ON u.userid = o.user_id
</select>

使用 bind 處理復(fù)雜表達(dá)式

<bind name="pattern" value="'%' + keyword + '%'" />
<select id="selectUsersByKeyword" resultType="User"> 
    SELECT * FROM users WHERE username LIKE #{pattern}
</select>

復(fù)用 SQL 片段

<sql id="baseUserSql"> SELECT userid, username, age, email FROM users</sql>
<select id="selectUsers" resultType="User"> 
    <include refid="baseUserSql"/> 
</select>


責(zé)任編輯:武曉燕 來源: 一安未來
相關(guān)推薦

2018-04-09 14:26:06

Go語法實(shí)踐

2013-11-22 16:45:28

SASJMP11

2013-07-23 15:10:34

PowerShell

2025-02-10 07:40:00

Java集合工具類編程

2024-10-15 10:38:32

2017-09-27 11:00:50

LinuxBash使用技巧

2021-05-11 05:39:07

Edge微軟瀏覽器

2017-11-23 15:24:35

Python速覽實(shí)戰(zhàn)

2023-11-18 19:28:20

Android 14

2023-07-04 12:11:25

2011-03-25 11:39:13

Nagios 功能Nagios 結(jié)構(gòu)

2021-12-23 14:57:25

Nginx服務(wù)器虛擬主機(jī)

2023-08-07 08:20:27

圖解算法工具

2020-06-02 10:00:33

GitHub 技術(shù)開發(fā)

2010-07-30 09:22:54

DB2實(shí)現(xiàn)

2021-04-29 05:29:49

芯片 5G芯片服務(wù)器芯片

2017-03-24 10:23:37

Python語法機(jī)器學(xué)習(xí)環(huán)境搭建

2021-06-28 06:26:53

微軟Windows 11Windows

2021-05-25 09:21:15

芯片 5G芯片服務(wù)器芯片

2025-06-30 09:02:17

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

99国产精品久久久久久久久久| 久久久精品久久久久久96| 舔着乳尖日韩一区| 欧美成人一区二区在线| 中国女人真人一级毛片| 国产综合激情| 伊人成人开心激情综合网| 操人视频免费看| 国模冰冰炮一区二区| 亚洲人成网站精品片在线观看| 精品免费日产一区一区三区免费| 中文字幕乱码视频| 亚洲乱码视频| www.亚洲男人天堂| 国产精品jizz| 日本精品在线播放| 在线亚洲免费视频| 免费一级特黄毛片| 久热国产在线| 久久久精品综合| 国产成人免费观看| 国产又粗又猛又色又| 久久精品亚洲一区二区| 欧美第一淫aaasss性| 国产黄a三级三级| 神马午夜久久| 亚洲成人av在线播放| 亚洲美女性囗交| 亚洲成人av观看| 欧美日韩激情美女| av在线播放天堂| 尤物视频在线看| 国产精品久久久久久久久动漫| 久久精品中文字幕一区二区三区| www.激情五月| 国产原创一区二区三区| 国产精品视频久久久| 中文字幕精品视频在线观看| 国产视频一区在线观看一区免费| 久久久亚洲国产天美传媒修理工| www.毛片com| 亚洲影视一区二区三区| 最新国产成人av网站网址麻豆| 国产真实乱人偷精品人妻| 全球av集中精品导航福利| 精品国产第一区二区三区观看体验| 久久久久久久久久毛片| 欧美xxxx性| 欧美日韩一区二区欧美激情| 日日噜噜夜夜狠狠| 欧美天堂一区二区| 欧美性受极品xxxx喷水| 一区二区三区韩国| 国产激情欧美| 91精品国产色综合久久ai换脸| 依人在线免费视频| 国产精久久久| 日韩精品在线网站| aaa黄色大片| 久久超级碰碰| 日韩电影视频免费| 中文字幕一二三四区| 教室别恋欧美无删减版| 国产亚洲欧美日韩美女| 刘亦菲国产毛片bd| 亚洲综合五月| 国语自产在线不卡| 欧美一区二区三区不卡视频| 免费av网站大全久久| 国产区精品视频| 国产成人精品无码高潮| www.欧美.com| 色噜噜色狠狠狠狠狠综合色一| 9191在线观看| 亚洲免费观看高清完整版在线观看熊 | 欧美成人在线直播| 日本五十肥熟交尾| 精品国产精品久久一区免费式 | 国产日韩精品推荐| 欧美日韩在线中文字幕| 国产精品高清亚洲| 成人在线国产视频| 成人免费网站www网站高清| 欧美日韩高清一区二区三区| 丰满人妻一区二区三区大胸| 欧美亚洲tv| 精品国产一区二区三区在线观看| 国产免费无码一区二区视频| 在线视频精品| 国产美女搞久久| 日本高清视频www| 国产三级一区二区| 日韩免费在线观看av| 韩国成人二区| 91.麻豆视频| 国产精品嫩草av| 久久国产电影| 91精品国产色综合| 一道本无吗一区| 成人精品免费网站| 天堂社区 天堂综合网 天堂资源最新版| 日韩黄色影院| 欧美午夜丰满在线18影院| 91pony九色| 自拍偷拍精品| 欧美精品情趣视频| 少妇又紧又色又爽又刺激视频| 国产精品一品视频| 日韩三级电影免费观看| 三级资源在线| 欧美日韩在线三区| 亚洲一区二区三区四区五区六区| 天天综合亚洲| 青青青国产精品一区二区| 国产露脸无套对白在线播放| 久久一留热品黄| 99久久免费观看| 欧美成人高清视频在线观看| 日韩国产在线播放| 欧美成人片在线观看| 日产欧产美韩系列久久99| 国产高清精品一区二区| 精品国产白色丝袜高跟鞋| 色网综合在线观看| 欧美色图亚洲激情| 亚洲精品乱码| 成人黄色在线免费观看| 精品美女在线观看视频在线观看| 在线观看免费视频综合| 97人妻精品一区二区三区免| 亚洲电影在线| 99视频在线| 中文在线观看免费| 欧美一区二区三区视频在线观看| 大胸美女被爆操| 日韩激情视频在线观看| 蜜桃91精品入口| 欧亚在线中文字幕免费| 亚洲精品理论电影| 日本在线视频中文字幕| 成人综合在线网站| 国产成人在线小视频| 欧美久久一区二区三区| 操91在线视频| 国内精品国产成人国产三级| 亚洲女同ⅹxx女同tv| 午夜精品久久久久久久99热影院| 欧美综合久久| 国产精品一区二区久久精品| 日本最黄一级片免费在线| 欧美性猛交一区二区三区精品| 天堂久久精品忘忧草| 老司机免费视频久久| 秋霞久久久久久一区二区| 日韩精品三区| 搡老女人一区二区三区视频tv| 一区二区日韩视频| 中文字幕在线观看不卡视频| 91性高潮久久久久久久| 综合在线视频| 国产经品一区二区| wwww亚洲| 精品亚洲aⅴ在线观看| av毛片在线免费观看| 中文av一区二区| 一区二区三区四区毛片| 欧美精品二区| 久久av一区二区三区亚洲| 亚洲午夜天堂| 中文字幕免费国产精品| 国产精品国产三级国产普通话对白| 中文字幕亚洲综合久久菠萝蜜| 亚洲网中文字幕| 亚洲日产国产精品| 日韩欧美精品久久| 91久久青草| 久久久久中文字幕2018| 欧美视频综合| 在线综合视频播放| 日本在线视频中文字幕| 欧美激情中文字幕| 下面一进一出好爽视频| 国产精品乱看| 先锋影音欧美| 91久久精品无嫩草影院 | www成人在线| 国产精品三级av在线播放| 特黄特黄一级片| 免费亚洲网站| 香蕉精品视频在线| 伦理一区二区三区| 国产欧美久久一区二区| 爱啪视频在线观看视频免费| 色黄久久久久久| 色综合视频在线| 欧美麻豆精品久久久久久| 国产精品自拍视频一区| 国产精品丝袜一区| 国产xxxxxxxxx| 韩日欧美一区二区三区| 国产肥臀一区二区福利视频| 91精品电影| 欧美极品jizzhd欧美| 欧美经典影片视频网站| 国产精品极品在线| 51精品视频| 久久久999精品| 视频国产在线观看| 日韩色视频在线观看| 无码久久精品国产亚洲av影片| 亚洲综合丁香婷婷六月香| 美女av免费看| 久久婷婷国产综合国色天香| 三大队在线观看| 久久99蜜桃精品| 少妇性l交大片| 亚洲每日在线| 97超碰在线视| 欧美freesextv| 欧美一级二级三级| 精品一区二区男人吃奶| 91日本视频在线| 成人国产激情| 国产精品激情av电影在线观看| 国产盗摄精品一区二区酒店| 色多多国产成人永久免费网站 | 免费在线观看日韩视频| 国内自拍一区| 欧美日韩一级在线| 欧美影院三区| 午夜精品一区二区在线观看| 久久不见久久见中文字幕免费| 国产麻豆日韩| 成人18夜夜网深夜福利网| 96国产粉嫩美女| 精品视频一区二区三区| 成人激情免费在线| 日韩综合av| 国产免费一区二区三区在线观看| 日韩中文在线播放| 国产99久久久欧美黑人| 欧美日韩电影免费看| 欧美中文字幕视频在线观看| 蜜桃av在线| 日本aⅴ大伊香蕉精品视频| 欧产日产国产精品视频| 9.1国产丝袜在线观看| 手机av在线| 57pao精品| 高清不卡av| 国产精品视频xxxx| 日韩国产91| 91久久久一线二线三线品牌| 天堂av一区| 国产原创精品| 日韩欧美国产大片| 久久久一本精品99久久精品66| 天美av一区二区三区久久| 美女亚洲精品| 日韩av在线播放网址| 先锋影音男人资源| 欧美午夜不卡影院在线观看完整版免费| 成人国产在线看| 影音先锋久久| 97在线免费公开视频| 日产欧产美韩系列久久99| 可以看污的网站| 国产一区二区三区国产| 精品无码人妻少妇久久久久久| 91免费版在线看| 人与嘼交av免费| 亚洲免费视频成人| 日韩黄色一级大片| 色吊一区二区三区| 国产人妻精品一区二区三区| 日韩欧美你懂的| 欧洲天堂在线观看| 日韩视频免费观看| 国产福利片在线观看| 国产精品91久久久久久| 国产在线一区不卡| 国产一区免费在线| 久久一本综合| 日韩五码在线观看| 日韩影院免费视频| 一级黄色大片儿| 2020国产精品自拍| www.xx日本| 精品美女久久久久久免费| 亚洲精品一区二区二区| 精品国产麻豆免费人成网站| 国产青青草在线| 欧美肥臀大乳一区二区免费视频| 黑人精品一区| www.av一区视频| 日韩毛片视频| 久久久久人妻精品一区三寸| 国产在线视视频有精品| 精品少妇人妻一区二区黑料社区| 亚洲欧洲日本在线| 69成人免费视频| 日韩精品一区二区三区在线播放 | 成人黄色片视频| 国产麻豆成人精品| 欧美丰满美乳xxⅹ高潮www| 亚洲国产日产av| 91资源在线视频| 亚洲精品一区二区网址 | 国产91色在线播放| 91夜夜蜜桃臀一区二区三区| 亚洲永久激情精品| 亚洲欧美日韩国产综合精品二区| 一二三级黄色片| 91丨九色丨黑人外教| 久久久香蕉视频| 欧美日韩国产综合久久| 日本不卡免费播放| 性欧美激情精品| 伊人久久亚洲| 成人手机在线播放| 久久精品国产99国产精品| av直播在线观看| 亚洲高清免费在线| 成人黄色在线观看视频| xxxx性欧美| 青青伊人久久| 无码免费一区二区三区免费播放| 国产一区导航| 强迫凌虐淫辱の牝奴在线观看| 亚洲人成网站精品片在线观看| 中文字幕无线码一区| 亚洲最新视频在线| 日韩在线影院| 日本一区二区三区www| 亚洲一区黄色| 久久久久久久无码| 午夜精品免费在线观看| 日本波多野结衣在线| 午夜精品视频网站| 国产精品传媒| 玩弄中年熟妇正在播放| av在线播放一区二区三区| 日本一级黄色录像| 亚洲精品一区二区三区精华液| 伦理在线一区| 国产免费一区二区| 9国产精品视频| 中文字幕免费在线播放| 欧美体内谢she精2性欧美| 免费看男男www网站入口在线| 日韩av电影在线免费播放| 亚洲最好看的视频| 黄色三级视频片| 亚洲国产精品精华液ab| 国产精品国产一区二区三区四区| zzjj国产精品一区二区| 亚洲国产天堂| 99久久免费观看| 91丝袜美腿高跟国产极品老师| 国产在线观看黄色| 中文日韩在线观看| 疯狂欧洲av久久成人av电影| 中文字幕の友人北条麻妃| 国产成人小视频| 日本韩国欧美中文字幕| 亚洲天堂av高清| 国产精区一区二区| 国产免费一区二区视频| 久久亚洲一级片| 91影院在线播放| 久久久久亚洲精品| 日韩精品福利一区二区三区| 成人小视频在线看| 国产精品高清亚洲| 欧美一区二不卡视频| 热99精品只有里视频精品| 婷婷中文字幕一区| 无码人妻精品一区二区三| 欧美日韩性视频在线| 在线免费观看黄色av| 北条麻妃高清一区| 久久美女性网| 高h视频免费观看| 亚洲欧洲第一视频| 欧美9999| av无码精品一区二区三区| 亚洲乱码国产乱码精品精可以看| 日本精品一区二区在线观看| 国产精品精品视频| 欧美日韩视频| 久久久久亚洲av无码a片| 日韩欧美视频一区| 日本一区二区三区视频在线| 久久久久久av无码免费网站下载| 成人av网站免费观看| 97国产精品久久久| 8050国产精品久久久久久| 国产精品国内免费一区二区三区| 亚洲啪av永久无码精品放毛片| 欧美亚洲图片小说|