mybatis框架的xml映射文件常用查詢指南
使用mybatis框架時(shí),那必然會(huì)有對(duì)數(shù)據(jù)庫的查詢語句的編寫,所以這篇文章希望可以幫助到你。
什么是Mybatis框架?
MyBatis 是一款優(yōu)秀的持久層框架,它支持定制化 SQL、存儲(chǔ)過程以及高級(jí)映射。MyBatis 避免了幾乎所有的 JDBC 代碼和手動(dòng)設(shè)置參數(shù)以及獲取結(jié)果集。MyBatis 可以使用簡(jiǎn)單的 XML 或注解來配置和映射原生信息,將接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java對(duì)象)映射成數(shù)據(jù)庫中的記錄。
如何使用?
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文件中綁定持久層接口和實(shí)體對(duì)象
<?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標(biāo)簽中的namespace屬性指定的是我們持久層接口的項(xiàng)目路徑
- resultMap是Mybatis最強(qiáng)大的元素,它可以將查詢到的復(fù)雜數(shù)據(jù)(比如查詢到幾個(gè)表中數(shù)據(jù))映射到一個(gè)結(jié)果集當(dāng)中
- resultMap標(biāo)簽的type屬性是我們要映射的實(shí)體對(duì)象的項(xiàng)目路徑,id為resultMap的唯一標(biāo)識(shí)。
- resultMap中的result標(biāo)簽是實(shí)體和數(shù)據(jù)庫表字段的綁定,其中property屬性為實(shí)體對(duì)象的屬性名,column為數(shù)據(jù)庫的字段名,jdbcType是字段的類型。
xml映射文件的sql編寫
通過實(shí)體作為篩選條件查詢
<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" 指定查詢結(jié)果接收的resultMap的結(jié)果集。
持久層接口綁定
/** * 條件查詢 * * @param host 條件查詢 * @return 對(duì)象列表 */ 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標(biāo)簽中的屬性理解
- collection屬性為接收的數(shù)據(jù)源
- item為集合中的每一個(gè)元素
- index :用于表示在迭代過程中,每次迭代到的位置
- open :表示該語句以什么開始
- separator :表示在迭代時(shí)數(shù)據(jù)以什么符號(hào)作為分隔符
- close :表示以什么結(jié)束
持久層接口抽象方法
/** * 批量刪除主機(jī) * * @param hostIds 主機(jī)id數(shù)組 * @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>
持久層接口方法
/** * 將多個(gè)主機(jī)添加至一個(gè)主機(jī)組 * * @param request * @return Integer */Integer addHostList(HostAndGroupRequest request);
我是元素封裝在一個(gè)對(duì)象中,所以這個(gè)對(duì)象里有批量增加的元素,則直接可以傳一個(gè)對(duì)象。
總結(jié)
到此這篇關(guān)于mybatis框架的xml映射文件常用查詢指南的文章就介紹到這了,更多相關(guān)mybatis xml映射文件查詢內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java代碼性能優(yōu)化的35個(gè)方法總結(jié)
本篇文章主要介紹了Java代碼性能優(yōu)化的35個(gè)方法,具有很好的參考價(jià)值,下面跟著小編一起來看下吧2017-02-02JAVA加密算法- 非對(duì)稱加密算法(DH,RSA)的詳細(xì)介紹
這篇文章主要介紹了JAVA加密算法- 非對(duì)稱加密算法(DH,RSA),詳細(xì)介紹了DH,RSA的用法和示例,需要的朋友可以了解一下。2016-11-11一個(gè)簡(jiǎn)單的Java文件讀取的進(jìn)度條
這篇文章主要介紹了一個(gè)簡(jiǎn)單的Java文件讀取的進(jìn)度條,寫一個(gè)可以使用的?demo,涉及到了文件的相對(duì)路徑問題,需要的朋友可以參考下2023-04-04Java異常詳解_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
異常是Java語言中的一部分,它代表程序中由各種原因引起的“不正?!币蛩?。下面通過本文給大家介紹java異常的相關(guān)知識(shí),感興趣的朋友一起看看吧2017-06-06mybatis-plus中l(wèi)ambdaQuery()與lambdaUpdate()比較常見的使用方法總結(jié)
mybatis-plus是在mybatis的基礎(chǔ)上做增強(qiáng)不做改變,簡(jiǎn)化了CRUD操作,下面這篇文章主要給大家介紹了關(guān)于mybatis-plus中l(wèi)ambdaQuery()與lambdaUpdate()比較常見的使用方法,需要的朋友可以參考下2022-09-09IDEA 中創(chuàng)建并部署 JavaWeb 程序的方法步驟(圖文)
本文主要介紹了IDEA 中創(chuàng)建并部署 JavaWeb 程序的方法步驟,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02