最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MyBatis中的XML實現(xiàn)和動態(tài)SQL實現(xiàn)示例詳解

 更新時間:2024年02月18日 10:15:20   作者:zhanlongsiqu  
這篇文章主要介紹了MyBatis中的XML實現(xiàn)和動態(tài)SQL實現(xiàn),我們可以將XML中重復出現(xiàn)的內(nèi)容提取出來放到sql標簽中,當需要用到sql標簽中的內(nèi)容時,用include標簽將sql標簽中的內(nèi)容引進來即可,感興趣的朋友跟隨小編一起看看吧

一、XML實現(xiàn)

先在新建的XML文件中寫入如下內(nèi)容:

<?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.example.demo.mapper.UserInfoMapper">
</mapper>

再在mapper標簽里寫入操作數(shù)據(jù)庫的增刪查改。

1.1增

mapper層聲明的方法為:

Integer insert(UserInfo userInfo);

XML文件中的實現(xiàn)為:

<insert id = "insert">
    insert into
    userinfo
    (username, password, age, gender, phone)
    values
    (#{username}, #{password}, #{age}, #{gender}, #{phone})
</insert> 

1.2刪

mapper層聲明的方法為:

Integer delete(Integer id);

XML文件中的實現(xiàn)為:

<delete id="delete">
    delete from userinfo where id = #{id}
</delete>

1.3查

mapper層聲明的方法為:

List<UserInfo> queryUserList();

XML文件中的實現(xiàn)為:

<select id="queryUserList" resultType="com.example.demo.model.UserInfo">
    select * from userinfo
</select>

1.4改

mapper層聲明的方法為:

Integer update(UserInfo userInfo);

XML文件中的實現(xiàn)為:

<update id="update">
    update userinfo
    set password = #{password}
    where id = #{id}
</update>

二、XML方式實現(xiàn)動態(tài)SQL

2.1if標簽

使用示例:

<update id = "updateBook">
    update book_info
    <set>
        <if test = "bookName != null">
            book_name = #{bookName},
        </if>
        <if test = "author != null">
            author = #{author},
        </if>
        <if test = "count != null">
            count = #{count},
        </if>
        <if test = "price != null">
            price = #{price},
        </if>
        <if test = "publish != null">
            publish = #{publish},
        </if>
        <if test = "status != null">
            status = #{status},
        </if>
    </set>
    where id = #{id}
</update>

如果滿足bookName!=null這個條件,則會顯示if標簽里的內(nèi)容。

2.2trim標簽

使用示例:

<insert id="insert2" useGeneratedKeys="true" keyProperty="id">
    insert into
    userinfo
    <trim prefixOverrides="," prefix="(" suffix=")" suffixOverrides=",">
        <if test="username!=null">
            username,
        </if>
        <if test="password!=null">
            password,
        </if>
        <if test="age!=null">
            age,
        </if>
        <if test="gender!=null">
            gender,
        </if>
        <if test="phone!=null">
            phone,
        </if>
    </trim>
    values
    <trim prefixOverrides="," prefix="(" suffix=")" suffixOverrides=",">
        <if test="username!=null"> 
            #{username},
        </if>
        <if test="password!=null"> 
            #{password},
        </if>
        <if test="age!=null">
            #{age},
        </if>
        <if test="gender!=null">
            #{gender},
        </if>
        <if test="phone!=null">
            #{phone},
        </if>
     </trim>
</insert>

2.3where標簽

使用示例:

<select id="queryUserByWhere" resultType="com.yixing.mybatis.model.UserInfo">
    select * from userinfo
    <where>
        <if test="userName!=null">
            username= #{userName}
        </if>
        <if test="age!=null">
            and age=#{age}
        </if>
    </where>
</select>

where標簽的作用是刪除代碼塊最前面的and;當查詢條件為空時,會去掉where關鍵字。

2.4set標簽

使用示例:

<update id="update2">
    update userinfo
    <set>
        <if test="username!=null">
            username = #{username},
        </if>
        <if test="password!=null">
            password = #{password},
        </if>
        <if test="age!=null">
            age = #{age}
        </if>
    </set>
    where id = #{id}
</update>

set標簽會刪除代碼塊最后面的逗號。

2.5foreach標簽

使用示例:

<update id="batchDelete">
    update book_info
    set `status` = 0
    where id in
    <foreach collection="ids" open="(" close=")" separator="," item="id">
        #{id}
    </foreach>
</update>

默認情況下,如果mapper層聲明方法的參數(shù)是List類型,則foreach標簽里的collection會等于"list";如果mapper層聲明方法的參數(shù)是數(shù)組類型,則foreach標簽里的collection會等于"array",這時mybatis自動做的。我們可以在mapper層聲明方法中用@Param注解對聲明方法的參數(shù)進行重命名。

2.6include標簽和sql標簽

<sql id="cols">
    id, username,password,gender,age,phone,
</sql>
<select id="queryUserList" resultType="com.yixing.mybatis.model.UserInfo">
    select
    <include refid="cols"></include>
    delete_flag,
    create_time,
    update_time
    from userinfo
</select>

我們可以將XML中重復出現(xiàn)的內(nèi)容提取出來放到sql標簽中,當需要用到sql標簽中的內(nèi)容時,用include標簽將sql標簽中的內(nèi)容引進來即可。

到此這篇關于MyBatis中的XML實現(xiàn)和動態(tài)SQL實現(xiàn)的文章就介紹到這了,更多相關MyBatis XML和動態(tài)SQL內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 關于ObjectUtils.isEmpty()?和?null?的區(qū)別

    關于ObjectUtils.isEmpty()?和?null?的區(qū)別

    這篇文章主要介紹了關于ObjectUtils.isEmpty()?和?null?的區(qū)別,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • 基于@ConfigurationProperties的三種用法及說明

    基于@ConfigurationProperties的三種用法及說明

    SpringBoot配置屬性綁定詳解,介紹@Component若您配置類、@ConfigurationProperties綁定屬性及三種常見應用場景,附帶代碼示例與測試步驟
    2026-06-06
  • IDEA無法使用終端terminal問題的解決方案

    IDEA無法使用終端terminal問題的解決方案

    這篇文章主要介紹了IDEA無法使用終端terminal問題的解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • 通過字節(jié)碼看java中this的隱式傳參詳解

    通過字節(jié)碼看java中this的隱式傳參詳解

    這篇文章主要給大家介紹了關于如何通過字節(jié)碼看java中this的隱式傳參的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-11-11
  • mybaties plus實體類設置typeHandler不生效的解決

    mybaties plus實體類設置typeHandler不生效的解決

    這篇文章主要介紹了mybaties plus實體類設置typeHandler不生效的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • Java應用CPU占用過高問題的快速定位和解決方法

    Java應用CPU占用過高問題的快速定位和解決方法

    本文介紹了快速定位和解決Java應用CPU占用過高問題的標準流程,并通過一個實際案例演示,核心思想是通過進程、線程、線程棧和源代碼的逐步排查,最終定位到問題代碼,需要的朋友可以參考下
    2025-11-11
  • Mybatis攔截器如何實現(xiàn)數(shù)據(jù)權限過濾

    Mybatis攔截器如何實現(xiàn)數(shù)據(jù)權限過濾

    本文介紹了MyBatis攔截器的使用,通過實現(xiàn)Interceptor接口對SQL進行處理,實現(xiàn)數(shù)據(jù)權限過濾功能,通過在本地線程變量中存儲數(shù)據(jù)權限相關信息,并在攔截器的intercept方法中進行SQL增強處理
    2024-12-12
  • SpringCloud Gateway中斷言路由和過濾器的使用詳解

    SpringCloud Gateway中斷言路由和過濾器的使用詳解

    這篇文章主要介紹了SpringCloud Gateway中斷言路由和過濾器的使用,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • 詳解java封裝繼承多態(tài)

    詳解java封裝繼承多態(tài)

    這篇文章主要介紹了java封裝繼承多態(tài),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-03-03
  • Java中實現(xiàn)定時任務的兩種方法舉例詳解

    Java中實現(xiàn)定時任務的兩種方法舉例詳解

    這篇文章主要給大家介紹了關于Java中實現(xiàn)定時任務的兩種方法,文中總結(jié)了各種實現(xiàn)方式的優(yōu)缺點,并給出了推薦的使用場景,通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-12-12

最新評論

措勤县| 高雄县| 广州市| 河西区| 梁平县| 藁城市| 曲沃县| 利津县| 榆中县| 庆阳市| 南丹县| 延安市| 山西省| 定州市| 耿马| 万载县| 宁晋县| 安阳县| 榆社县| 托里县| 元江| 嘉定区| 阜南县| 肇州县| 武城县| 五大连池市| 滨海县| 苏尼特左旗| 聂荣县| 泗阳县| 卢湾区| 平泉县| 固原市| 霍林郭勒市| 临高县| 博爱县| 三台县| 洪湖市| 霍邱县| 渑池县| 抚宁县|