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

Mybatis映射文件詳解之mapper.xml文件

 更新時(shí)間:2024年09月28日 14:54:34   作者:字節(jié)探索者  
本文詳細(xì)介紹了Mybatis映射文件的結(jié)構(gòu)、標(biāo)簽和使用方法,包括mapper元素、標(biāo)簽的主要屬性如id、parameterType、resultType以及動態(tài)SQL和結(jié)果映射的使用,通過映射文件,可以將數(shù)據(jù)庫表與Java對象映射,支持查詢、插入、更新、刪除等操作,提高了SQL語句的靈活性和可重用性

在Mybatis中,Mapper XML文件是用于定義SQL語句和Java方法之間映射關(guān)系的核心配置文件。通過這些文件,開發(fā)者可以將數(shù)據(jù)庫中的表與Java對象進(jìn)行映射,實(shí)現(xiàn)數(shù)據(jù)的持久化操作。本文將詳細(xì)介紹Mybatis映射文件的相關(guān)知識,包括其結(jié)構(gòu)、標(biāo)簽以及如何編寫和使用。

一、Mybatis映射文件概述

Mybatis是一個Java持久層框架,它提供了一種簡單易用的方式來訪問和操作數(shù)據(jù)庫。在Mybatis中,映射文件(Mapper XML)起到了至關(guān)重要的作用,它們定義了SQL語句與Java方法之間的映射關(guān)系。

二、映射文件的結(jié)構(gòu)

Mapper XML文件通常用于定義與數(shù)據(jù)庫交互的SQL語句和操作。它的基本結(jié)構(gòu)如下所示:

<?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="cn.tedu.tea.admin.server.content.dao.persist.mapper.TagMapper">
        <!--    TagStandardVO getStandardById(Long id);-->
        <select id="getStandardById" resultMap="StandardResultMap">
            SELECT id,name,parent_id,enable,sort
            FROM content_tag
            WHERE id=#{id}
        </select>
    <resultMap id="StandardResultMap" type="cn.tedu.tea.admin.server.content.pojo.vo.TagStandardVO">
        <id column="id" property="id"></id>
        <result column="name" property="name"></result>
        <result column="parent_id" property="parentId"></result>
        <result column="enable" property="enable"></result>
        <result column="sort" property="sort"></result>
    </resultMap>
</mapper>

Mapper XML文件詳解

mapper元素是Mapper XML文件的根元素,它有一個namespace屬性用于指定對應(yīng)的Mapper接口或命名空間。

<mapper namespace="cn.tedu.tea.admin.server.content.dao.persist.mapper.TagMapper">
</mapper>

定義SQL語句和對應(yīng)的操作:

: 用于執(zhí)行查詢操作。
: 用于執(zhí)行插入操作。
: 用于執(zhí)行更新操作。
: 用于執(zhí)行刪除操作。

每個標(biāo)簽有以下主要屬性:

id: SQL語句的唯一標(biāo)識符,可以通過這個id在Java代碼中調(diào)用對應(yīng)的SQL語句。
parameterType: SQL語句的參數(shù)類型,指定了傳入SQL語句的參數(shù)類型。
resultType 或 resultMap: 如果是查詢操作,可以通過resultType指定返回結(jié)果的類型,或者使用resultMap自定義結(jié)果映射規(guī)則。

查詢操作

 <select id="selectByType"
            resultType="cn.tedu.baking.pojo.vo.ContentManagementVO">
        SELECT c.id,
               c.title,
               c.img_url,
               c.brief,
               c.type,
               cat.name categoryName,
               c.view_count,
               c.comment_count,
               c.create_time
        FROM t_content c
                 JOIN t_category cat ON c.category_id = cat.id
        WHERE c.type = #{type}
          AND c.create_by = #{id}
    </select>

這個示例中,標(biāo)簽定義了一個查詢操作,id為selectUserById,返回結(jié)果類型為User,SQL語句為SELECT * FROM users WHERE id = #{id}。#{id}是占位符,表示動態(tài)傳入的參數(shù)。

插入操作

 <insert id="insert">
        INSERT INTO t_content
        VALUES (NULL, #{title}, #{imgUrl}, #{videoUrl},
                #{content}, #{type}, 0, 0, #{createBy},
                #{createTime}, null, null,
                #{brief}, #{categoryId})
    </insert>

這個示例中,標(biāo)簽定義了一個插入操作,id為insertUser,參數(shù)類型為User,SQL語句為INSERT INTO users (username, password) VALUES (#{username}, #{password})。#{username}和#{password}分別表示User對象中的屬性。

更新操作

<update id="updateUser" parameterType="User">
    UPDATE users SET username = #{username}, password = #{password} WHERE id = #{id}
</update>

這個示例中,標(biāo)簽定義了一個更新操作,id為updateUser,參數(shù)類型為User,SQL語句為UPDATE users SET username = #{username}, password = #{password} WHERE id = #{id}。這里的#{id}、#{username}和#{password}都是User對象的屬性。

刪除操作

  <delete id="deleteById">
        DELETE
        FROM t_content
        WHERE id = #{id}
    </delete>

這個示例中,標(biāo)簽定義了一個刪除操作,id為deleteUser,SQL語句為DELETE FROM users WHERE id = #{id},其中#{id}是動態(tài)傳入的參數(shù)。

動態(tài)SQL

MyBatis支持使用、、、等標(biāo)簽來構(gòu)建動態(tài)SQL語句,根據(jù)條件動態(tài)生成SQL片段,提高SQL語句的靈活性和可重用性。

<update id="update">
        UPDATE t_content
        <set>
            <if test="title!=null">title=#{title},</if>
            <if test="imgUrl!=null">img_url=#{imgUrl},</if>
            <if test="brief!=null">brief=#{brief},</if>
            <if test="videoUrl!=null">video_url=#{videoUrl},</if>
            <if test="type!=null">type=#{type},</if>
            <if test="categoryId!=null">category_id=#{categoryId},</if>
            <if test="viewCount!=null">view_count=#{viewCount},</if>
            <if test="commentCount!=null">comment_count=#{commentCount},</if>
            <if test="updateBy!=null">update_by=#{updateBy},</if>
            <if test="updateTime!=null">update_time=#{updateTime},</if>
            <if test="content!=null">content=#{content}</if>
        </set>
        WHERE id=#{id}
    </update>

結(jié)果映射

除了簡單的resultType屬性外,還可以使用標(biāo)簽自定義復(fù)雜的結(jié)果映射關(guān)系,將數(shù)據(jù)庫中的查詢結(jié)果映射到Java對象的屬性中。

<select id="getStandardById" resultMap="StandardResultMap">
            SELECT id,name,parent_id,enable,sort
            FROM content_tag
            WHERE id=#{id}
        </select>
    <resultMap id="StandardResultMap" type="cn.tedu.tea.admin.server.content.pojo.vo.TagStandardVO">
        <id column="id" property="id"></id>
        <result column="name" property="name"></result>
        <result column="parent_id" property="parentId"></result>
        <result column="enable" property="enable"></result>
        <result column="sort" property="sort"></result>
    </resultMap>

到此這篇關(guān)于Mybatis映射文件詳解-mapper.xml文件的文章就介紹到這了,更多相關(guān)Mybatis mapper.xml文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringMVC異步處理操作(Callable和DeferredResult)

    SpringMVC異步處理操作(Callable和DeferredResult)

    這篇文章主要介紹了SpringMVC異步處理操作(Callable和DeferredResult),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • springboot啟動報(bào)錯Failed to load class [javax.servlet.Filter]的解決

    springboot啟動報(bào)錯Failed to load class [java

    這篇文章主要介紹了springboot啟動報(bào)錯Failed to load class [javax.servlet.Filter]的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2026-03-03
  • java貪吃蛇游戲?qū)崿F(xiàn)代碼

    java貪吃蛇游戲?qū)崿F(xiàn)代碼

    這篇文章主要為大家詳細(xì)介紹了java貪吃蛇游戲?qū)崿F(xiàn)代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • Java生成堆內(nèi)存dump的問題

    Java生成堆內(nèi)存dump的問題

    這篇文章主要介紹了Java生成堆內(nèi)存dump的問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • JavaWeb開發(fā)之模仿知乎首頁完整代碼

    JavaWeb開發(fā)之模仿知乎首頁完整代碼

    這篇文章主要介紹了JavaWeb開發(fā)之模仿知乎首頁完整代碼的相關(guān)資料,非常不錯,具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-11-11
  • 基于SpringBoot+FastExcel的百萬級數(shù)據(jù)導(dǎo)入導(dǎo)出完整方案

    基于SpringBoot+FastExcel的百萬級數(shù)據(jù)導(dǎo)入導(dǎo)出完整方案

    本文詳細(xì)介紹了在SpringBoot3.5.11+JDK17+MySQL環(huán)境下,使用FastExcel實(shí)現(xiàn)百萬級數(shù)據(jù)的導(dǎo)入和導(dǎo)出,內(nèi)容包括數(shù)據(jù)庫表設(shè)計(jì)、百萬測試數(shù)據(jù)生成、實(shí)體類與Mapper、配置文件、百萬數(shù)據(jù)導(dǎo)入、百萬數(shù)據(jù)導(dǎo)出、線程池、阻塞隊(duì)列、CountDownLatch的設(shè)計(jì)思路與原理,以及接口測試方法
    2026-03-03
  • Spring IoC容器常見獲取Bean的方式匯總示例解析

    Spring IoC容器常見獲取Bean的方式匯總示例解析

    這篇文章主要為大家介紹了Spring IoC容器常見獲取Bean的方式匯總示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • 利用java實(shí)現(xiàn)二維碼和背景圖的合并

    利用java實(shí)現(xiàn)二維碼和背景圖的合并

    本文介紹如何使用java代碼將自動生成的二維碼放入背景模板中,對于java學(xué)習(xí)者或許有幫助,一起來看看。
    2016-07-07
  • Java微信公眾平臺之群發(fā)接口(高級群發(fā))

    Java微信公眾平臺之群發(fā)接口(高級群發(fā))

    這篇文章主要為大家詳細(xì)介紹了Java微信公眾平臺之群發(fā)接口,高級群發(fā)功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • 淺談使用java解析和生成JSON

    淺談使用java解析和生成JSON

    在www.json.org上公布了很多JAVA下的json構(gòu)造和解析工具,其中g(shù)oogle-gson和org.json比較簡單,兩者使用上差不多但還是有些區(qū)別。下面我們就來分別介紹下用他們構(gòu)造和解析Json數(shù)據(jù)的方法示例。
    2015-08-08

最新評論

灌云县| 湘乡市| 商水县| 福安市| 樟树市| 富民县| 越西县| 崇信县| 普兰店市| 灵璧县| 资源县| 洪雅县| 教育| 庆云县| 冀州市| 闽侯县| 织金县| 张家港市| 南充市| 永泰县| 衡南县| 萝北县| 柏乡县| 常宁市| 乌什县| 定边县| 神池县| 禄劝| 阿拉善左旗| 盘山县| 肥西县| 商丘市| 东明县| 山东省| 乌海市| 开江县| 神木县| 辽中县| 镇坪县| 安岳县| 柞水县|