中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MyBatis框架怎么通過xml映射文件實現查詢語句編寫

發布時間:2022-02-23 13:53:21 來源:億速云 閱讀:207 作者:小新 欄目:開發技術

這篇文章給大家分享的是有關MyBatis框架怎么通過xml映射文件實現查詢語句編寫的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

什么是Mybatis框架?

MyBatis 是一款優秀的持久層框架,它支持定制化 SQL、存儲過程以及高級映射。MyBatis 避免了幾乎所有的 JDBC 代碼和手動設置參數以及獲取結果集。MyBatis 可以使用簡單的 XML 或注解來配置和映射原生信息,將接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java對象)映射成數據庫中的記錄。

如何使用?

pom文件依賴

<dependency>
 <groupId>org.mybatis.spring.boot</groupId>
 <artifactId>mybatis-spring-boot-starter</artifactId>
 <version>2.1.3</version>
</dependency>

yml文件配置,這里匹配 resource/mapper/ 路徑下的映射文件。

mybatis:
  mapper-locations: classpath:mapper/*.xml

在xml文件中綁定持久層接口和實體對象

<?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.flamelephant.fabricmgt.dao.HostMapper">
 <resultMap type="com.flamelephant.fabricmgt.entity.po.Host" id="HostMap">
 <result property="id" column="id" jdbcType="INTEGER"/>
 <result property="hostName" column="host_name" jdbcType="VARCHAR"/>
 <result property="ip" column="ip" jdbcType="VARCHAR"/>
 <result property="userName" column="user_name" jdbcType="VARCHAR"/>
 <result property="passWord" column="pass_word" jdbcType="VARCHAR"/>
 <result property="state" column="state" jdbcType="OTHER"/>
 <result property="tag" column="tag" jdbcType="VARCHAR"/>
 <result property="gmtCreated" column="gmt_created" jdbcType="TIMESTAMP"/>
 <result property="gmtModified" column="gmt_modified" jdbcType="TIMESTAMP"/>
 </resultMap>
</mapper>
  • mapper標簽中的namespace屬性指定的是我們持久層接口的項目路徑

  • resultMap是Mybatis最強大的元素,它可以將查詢到的復雜數據(比如查詢到幾個表中數據)映射到一個結果集當中

  • resultMap標簽的type屬性是我們要映射的實體對象的項目路徑,id為resultMap的唯一標識。

  • resultMap中的result標簽是實體和數據庫表字段的綁定,其中property屬性為實體對象的屬性名,column為數據庫的字段名,jdbcType是字段的類型。

xml映射文件的sql編寫

通過實體作為篩選條件查詢

<select id="queryAll" resultMap="HostMap">
    select id,
           host_name,
           ip,
           user_name,
           pass_word,
           state,
           tag,
           gmt_created,
           gmt_modified
    from host
 <where>
    <if test="id != null and id != ''">
        and id = #{id}
    </if>
    <if test="hostName != null and hostName != ''">
        and host_name like CONCAT('%', #{hostName}, '%')
    </if>
    <if test="ip != null and ip != ''">
        and ip like CONCAT('%', #{ip}, '%')
    </if>
    <if test="userName != null and userName != ''">
        and user_name = #{userName}
    </if>
    <if test="passWord != null and passWord != ''">
        and pass_word = #{passWord}
    </if>
    <if test="state != null and state != ''">
        and state = #{state}
    </if>
    <if test="tag != null and tag != ''">
        and tag = #{tag}
    </if>
    <if test="gmtCreated != null">
        and gmt_created = #{gmtCreated}
    </if>
    <if test="gmtModified != null">
        and gmt_modified = #{gmtModified}
    /if>
 </where>
</select>
  • id="queryAll"為持久層接口的抽象方法名

  • resultMap="HostMap" 指定查詢結果接收的resultMap的結果集。

持久層接口綁定

/**
 * 條件查詢
 *
 * @param host 條件查詢
 * @return 對象列表
 */
List<Host> queryAll(Host host);

通過主鍵批量刪除

<!--通過主鍵批量刪除-->
<delete id="deleteHostByIds" parameterType="java.lang.Integer">
 delete
    from host
            where id in
    <if test="hostIds != null and hostIds.length > 0">
        <foreach item="id" collection="hostIds" index="index" open="(" separator="," close=")">
            #{id}
        </foreach>
    </if>
 </delete>

以上sql語句的原型為

delete from host where id in(1,2,3)

foreach標簽中的屬性理解

  • collection屬性為接收的數據源

  • item為集合中的每一個元素

  • index :用于表示在迭代過程中,每次迭代到的位置

  • open :表示該語句以什么開始

  • separator :表示在迭代時數據以什么符號作為分隔符

  • close :表示以什么結束

持久層接口抽象方法

/**
 * 批量刪除主機
 *
 * @param hostIds 主機id數組
 * @return Integer
 */Integer deleteHostByIds(@Param("hostIds") Long[] hostIds);

批量新增

<!--批量增加-->
<insert id="addHostList">
 insert into host_and_group(host_group_id, host_id)
       values
    <foreach collection="hostGroupIdList" item="hostGroupId" index="index" separator=",">
            (#{hostGroupId}, #{hostId})
    </foreach>
</insert>

持久層接口方法

/**
 * 將多個主機添加至一個主機組
 *
 * @param request
 * @return Integer
 */Integer addHostList(HostAndGroupRequest request);

我是元素封裝在一個對象中,所以這個對象里有批量增加的元素,則直接可以傳一個對象。

感謝各位的閱讀!關于“MyBatis框架怎么通過xml映射文件實現查詢語句編寫”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

临漳县| 四平市| 太湖县| 茌平县| 昌平区| 拜泉县| 特克斯县| 东城区| 东乡族自治县| 瑞金市| 视频| 昌乐县| 虞城县| 新营市| 淮阳县| 新巴尔虎右旗| 五台县| 南昌县| 普宁市| 新平| 交城县| 东山县| 章丘市| 广饶县| 沙洋县| 泗阳县| 贺州市| 泰兴市| 唐海县| 兴海县| 泸溪县| 柘城县| 南涧| 偃师市| 衡水市| 噶尔县| 邹城市| 长治县| 临澧县| 塘沽区| 蕲春县|