精品欧美一区二区三区在线观看 _久久久久国色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ù)棧公眾號

国产精品久久久久久久久久妞妞| 黄网站在线观| 久久国内精品视频| 久精品免费视频| 在线天堂www在线国语对白| 美女100%一区| 亚洲视频香蕉人妖| 久久精品中文字幕一区二区三区| 免费中文字幕在线观看| 亚洲丝袜美腿一区| 欧美一级黄色录像| 国产a视频免费观看| av片在线观看| 日本一区二区动态图| 国产高清精品一区二区三区| 日本成人一级片| 伊人久久亚洲影院| 日韩中文理论片| 久久人人爽人人爽人人片| 国产传媒av在线| 中文字幕一区二区三区四区不卡| 国产日韩欧美日韩| 99热只有这里有精品| 亚洲精品a级片| 欧美大片一区二区| 少妇一级淫免费播放| 岛国av在线网站| 99国产精品国产精品久久| 国产一区视频在线播放| 久久久久在线视频| 亚洲黄网站黄| 欧美日本在线视频中文字字幕| 精品国产免费久久久久久婷婷| 欧美bbbxxxxx| 中文字幕一区免费在线观看| 奇米精品在线| 香港三日本三级少妇66| 国产成人综合在线播放| 成人免费高清完整版在线观看| 久久久久久福利| 校花撩起jk露出白色内裤国产精品| 色婷婷久久99综合精品jk白丝| 四虎永久国产精品| 九色在线观看| 久久一夜天堂av一区二区三区| 国产精品成熟老女人| 超碰中文字幕在线| 亚洲精品女人| 98精品国产自产在线观看| 久久久久久久久久久久久久免费看 | 久久久久久久久久久久久久国产| 高清国产福利在线观看| 91麻豆国产福利精品| 黄色99视频| 天天射天天色天天干| 不卡一区在线观看| 国产一区二区三区四区hd| 欧美一级在线免费观看| 免费在线观看一区二区三区| 欧美老少做受xxxx高潮| 丝袜 亚洲 另类 欧美 重口| 中文字幕亚洲综合久久五月天色无吗''| 精品成人一区二区| 精品视频站长推荐| 亚欧日韩另类中文欧美| 日韩色视频在线观看| 久久久精品视频国产| 国产精品欧美一区二区三区不卡 | 99re热视频这里只精品| 久久国产精品一区二区三区| 99国产精品99| 成人精品gif动图一区| 国产日韩一区欧美| 国产精品欧美亚洲| 国产成人自拍网| 国产自产女人91一区在线观看| 国产成人精品a视频一区| 亚洲黄色精品| 国产精品国模在线| 国产精品爽爽久久久久久| 国产高清在线观看免费不卡| 国模精品娜娜一二三区| 国产叼嘿视频在线观看| 成人免费看的视频| 麻豆成人av| 91激情在线| 一区二区三区美女视频| 男人操女人免费软件| 日本三级在线观看网站| 精品久久久久久中文字幕大豆网| 欧美在线观看黄| 五月天av在线| 51久久夜色精品国产麻豆| 毛片毛片毛片毛片毛片毛片毛片毛片毛片 | 亚洲涩涩av| 日韩中文字幕网站| 九九九国产视频| 免费视频最近日韩| 国产精品亚洲一区| 999在线视频| 天天做天天摸天天爽国产一区| 成人免费网站入口| 影视一区二区三区| 欧美一a一片一级一片| 中文字幕无人区二| 97精品视频| 欧美专区第一页| 国产精品无码久久久久成人app| 国内精品视频666| 91亚洲精品一区二区| 视频在线观看你懂的| 亚洲精品中文字幕乱码三区| 中文字幕无码不卡免费视频| 亚洲精品a区| 亚洲新中文字幕| 日本视频免费在线| 亚洲欧美网站| 亚洲直播在线一区| 2017亚洲天堂1024| 色域天天综合网| 天天干天天草天天| 亚洲精品进入| 国内揄拍国内精品少妇国语| 国产熟女精品视频| 不卡的av网站| 白白操在线视频| 亚洲精品乱码日韩| 在线观看久久av| 外国一级黄色片| 久久国产麻豆精品| 青娱乐一区二区| 综合日韩av| 日韩精品日韩在线观看| 91精品国产高潮对白| 国产久卡久卡久卡久卡视频精品| 精品国产福利| 91禁在线看| 亚洲成人性视频| 久久精品www| 国产成人免费在线观看| 日韩国产伦理| 日韩在线影院| 欧美草草影院在线视频| 天天看片中文字幕| 午夜影院日韩| 亚洲精品欧美日韩专区| 亚洲搞黄视频| 91精品欧美福利在线观看| 中文字幕av网址| 亚洲欧美视频一区二区三区| 久久久综合亚洲91久久98| 俺来也官网欧美久久精品| 欧美岛国在线观看| 久久精品视频6| 99久久精品一区| 红桃av在线播放| 波多野结衣在线播放一区| 欧美精品第一页在线播放| 中国精品一区二区| 99精品国产视频| 一本大道熟女人妻中文字幕在线 | 国产精品免费一区二区| 国内高清免费在线视频| 亚洲精品电影久久久| av黄色在线看| 日本一区二区免费在线观看视频| 97久久国产亚洲精品超碰热| xxxx日韩| 57pao精品| 99中文字幕一区| 69成人精品免费视频| 国产精品白浆一区二小说| 91美女蜜桃在线| 色乱码一区二区三区在线| 色婷婷久久久| 国产精品视频成人| 青春草在线免费视频| 日韩精品电影网| 在线观看不卡的av| 亚洲国产一区二区三区| 深爱五月激情网| 国产精品久久久免费| 日韩av一级大片| 亚洲精品福利| 国产精品91久久久久久| 国产原厂视频在线观看| 亚洲激情小视频| 中文字幕久久久久| 亚洲综合一区二区精品导航| 在线不卡av电影| 国产毛片一区二区| 成人精品小视频| 在线观看日韩| 欧美三级网色| 一区二区三区视频免费视频观看网站| 久久av在线看| 天堂在线一二区| 日韩视频一区二区三区在线播放 | 在线精品视频免费观看| 中文字幕一区二区三区人妻电影| 一区二区自拍| 亚洲一卡二卡区| 偷拍自拍亚洲色图| 91成人免费在线观看| 影音成人av| 欧美一二三视频| 在线观看中文| 搡老女人一区二区三区视频tv| 在线中文字幕网站| 五月天网站亚洲| 男女性高潮免费网站| 高清在线观看日韩| 久久黄色片网站| 三级不卡在线观看| 亚洲综合首页| 蜜乳av综合| 成人动漫网站在线观看| 卡通欧美亚洲| 97av在线播放| 欧美激情成人动漫| 久色乳综合思思在线视频| 粉嫩av在线播放| 亚洲精品视频在线播放| 中文字幕在线日本| 婷婷中文字幕综合| 国产一级片视频| 有码一区二区三区| 插吧插吧综合网| 99久久免费视频.com| 中文字幕在线综合| 日韩国产欧美视频| 无码人妻丰满熟妇区毛片| 亚洲激情av| 福利视频一区二区三区四区| 国产成人精品三级高清久久91| 成人国产精品久久久| 播放一区二区| 九九综合九九综合| av在线下载| 久久国产精品久久久久久久久久| 日韩大片b站免费观看直播| 亚洲成人激情在线| 三级网站在线看| 亚洲黄色av网站| 日韩av视屏| 国产午夜精品全部视频播放| 麻豆av电影在线观看| 日韩一区二区三区av| 国产女人18毛片18精品| 欧美一级生活片| 国内老熟妇对白xxxxhd| 日韩欧美精品在线| 好吊色一区二区| 精品香蕉一区二区三区| 精品国产18久久久久久| 欧美大片拔萝卜| 熟妇人妻系列aⅴ无码专区友真希| 欧美日韩一区二区三区免费看| 久久久综合久久久| 亚洲成人av一区二区三区| 国产69精品久久久久久久久久| 亚洲同性同志一二三专区| 午夜爱爱毛片xxxx视频免费看| www欧美成人18+| 精品欧美一区二区久久久| 成人av手机在线观看| 91丝袜超薄交口足| 顶级嫩模精品视频在线看| 精品中文字幕在线播放| 韩国精品免费视频| 无码人妻一区二区三区免费n鬼沢| 日韩 欧美一区二区三区| 久久综合久久网| 性伦欧美刺激片在线观看| 午夜免费福利在线| 狂野欧美一区| 亚洲高清视频免费| proumb性欧美在线观看| 亚洲自拍偷拍图| 久久综合一区二区| 992在线观看| 亚洲福利视频导航| 中文字幕乱伦视频| 欧美一级xxx| 国产精品一二三四五区| 亚洲第一级黄色片| 91在线高清| 国产+成+人+亚洲欧洲| 福利一区二区| 国产亚洲欧美一区二区| 红杏aⅴ成人免费视频| 日韩.欧美.亚洲| 欧美涩涩网站| 一区二区三区入口| av电影一区二区| 影音先锋男人资源在线观看| 亚洲二区视频在线| 91中文字幕在线视频| 日韩精品免费在线视频| 国产精品一区二区三区视频网站| 久久色免费在线视频| 中文字幕在线视频久| 亚洲综合成人婷婷小说| 精品国产乱码久久久久久1区2匹| 日本在线一区| 亚洲美女少妇无套啪啪呻吟| 国产精品后入内射日本在线观看| 亚洲自啪免费| 九九九久久久久久久| 欧美激情一区三区| 日本学生初尝黑人巨免费视频| 精品久久久中文| jizz中国女人| 日日狠狠久久偷偷四色综合免费| 黄网站视频在线观看| 九九精品在线播放| 四虎国产精品永久在线国在线| 51国产成人精品午夜福中文下载 | 亚洲综合第一| 日韩中文字幕亚洲一区二区va在线| 青青草精品视频在线观看| 97久久精品人人澡人人爽| 久久久久成人网站| 日韩一区二区电影在线| 污污视频在线观看网站| 欧美精品一区二区免费| 中文不卡1区2区3区| 国产精品对白刺激久久久| 欧美午夜18电影| 欧美乱做爰xxxⅹ久久久| 国产乱码精品一品二品| 亚洲一级二级片| 欧美美女视频在线观看| 中文字幕在线播放| 国产精品自拍偷拍| 日韩1区在线| 蜜臀一区二区三区精品免费视频| 国产成人精品亚洲777人妖| 丝袜美腿小色网| 日韩三级免费观看| 青草视频在线免费直播| 成人自拍偷拍| 一本色道久久综合| 亚洲av片不卡无码久久| 色综合久久天天| 国产高清视频在线| 国产综合在线观看视频| 外国成人免费视频| 茄子视频成人免费观看| 久久先锋影音av| 中文字幕乱码一区二区| 神马久久久久久| 亚洲91网站| 性欧美大战久久久久久久| 91小视频在线观看| 成年人视频免费| 精品国产区一区二区三区在线观看 | 天海翼精品一区二区三区| 每日在线更新av| 久久精品视频一区| 亚洲天堂中文字幕在线| 九九精品视频在线| 啪啪国产精品| 国产无套粉嫩白浆内谢的出处| aaa国产一区| 无码一区二区三区在线观看| 亚洲成人黄色网| av在线一区不卡| 四虎精品欧美一区二区免费| 成人午夜免费av| 无码一区二区三区| 欧美精品免费看| 五月天亚洲一区| 日本中文字幕精品—区二区| 国产网红主播福利一区二区| 一级黄色大片网站| 欧美激情一区二区三区高清视频| 成人网av.com/| 国内精品视频一区二区三区| 久久久久久久电影| 国产又大又粗又爽| 久久亚洲综合国产精品99麻豆精品福利| 韩日一区二区| 国产精品啪啪啪视频| 91麻豆免费观看| 国产伦精品一区二区三区视频痴汉 | 午夜男人的天堂| 欧美色图免费看| av影视在线| 伊人久久大香线蕉av一区| 本田岬高潮一区二区三区| 国产情侣免费视频| 久久久噜噜噜久久中文字免| 国产一区二区欧美| 美女扒开腿免费视频| 亚洲成av人片一区二区三区| 亚洲精品综合网| 国产欧美精品在线| 亚洲欧洲美洲一区二区三区| 蜜臀av一区二区三区有限公司|