mybatis中映射文件include標(biāo)簽的應(yīng)用
mybatis映射文件include標(biāo)簽應(yīng)用
MyBatis中sql標(biāo)簽定義SQL片段,include標(biāo)簽引用,可以復(fù)用SQL片段可以使用標(biāo)簽提取出來(lái),在使用的地方使用標(biāo)簽引用即可.sql標(biāo)簽中id屬性對(duì)應(yīng)include標(biāo)簽中的refid屬性。通過(guò)include標(biāo)簽將sql片段和原sql片段進(jìn)行拼接成一個(gè)完整的sql語(yǔ)句進(jìn)行執(zhí)行。
具體用法如下:
1.引用同一個(gè)xml中的sql片段
<sql id="sqlid"> res_type_id,res_type </sql> <select id="selectbyId" resultType="com.property.vo.PubResTypeVO"> select <include refid="sqlid"/> from pub_res_type </select>
2.引用公用的sql片段
include標(biāo)簽中也可以用property標(biāo)簽,用以指定自定義屬性。在sql標(biāo)簽中通過(guò)${}取出對(duì)應(yīng)的屬性值
<select id="queryPubResType" parameterType="com.property.vo.PubResTypeVO" resultMap="PubResTypeList"> select a.res_type_id, <include refid="com.common.dao.FunctionDao.SF_GET_LNG_RES_TYPE"> <property name="AI_RES_TYPE_ID" value="a.res_type_id"/> <property name="lng" value="#{lngId}"/> <property name="female" value="'女'"/> </include> as res_type from pub_res_type a </select>
3.對(duì)于多個(gè)xml文件需要同時(shí)引用一段相同的
在某個(gè)xml 中定義這個(gè) sql 代碼片段,在需要引用的地方使用全稱引用即可,例子如下:
ShareMapper.xml
<mapper namespace="com.company.ShareMapper"> <sql id="someSQL"> id,name </sql> </mapper>
CustomMapper.xml
<mapper namespace="com.company.CustomMapper"> <select id="selectSome" > select <include refid="com.company.ShareMapper.someSQL"/> from t </select> </mapper>
使用resultType進(jìn)行輸出映射,只有查詢出來(lái)的列名和pojo中的屬性名一致,該列才可以映射成功。
如果查詢出來(lái)的列名和pojo的屬性名不一致,通過(guò)定義一個(gè)resultMap對(duì)列名和pojo屬性名之間作一個(gè)映射關(guān)系。
resultMap
:適合使用返回值是自定義實(shí)體類的情況resultType
:適合使用返回值得數(shù)據(jù)類型是非自定義的,即jdk的提供的類型.
mybatis sql xml include標(biāo)簽 (代碼去重)
mybatis sql xml 對(duì)于重復(fù)的代碼片段 可以使用 include 標(biāo)簽進(jìn)行優(yōu)化
例如 以下將查詢條件進(jìn)行優(yōu)化:
<sql id="where"><!-- 定義代碼片段--> <where> <if test="CarNo != null and CarNo != ''"> and car_no like concat('%',#{CarNo},'%') </if> <if test="CardNo != null and CardNo != ''"> and card_no = #{CardNo} </if> <if test="serviceType != null and serviceType != ''"> and service_type = #{serviceType} </if> .....省略 </where> </sql> <select id="queryList" resultType="com.framework.entity.WeightEntity"> select * from weight <include refid="where"/> <!-- 引用--> <if test="offset != null and limit != null"> limit #{offset}, #{limit} </if> </select> <select id="queryTotal" resultType="int"> select count(*) from weight <include refid="where" /> <!-- 引用-> </select>
當(dāng)然 include標(biāo)簽不僅僅用于where, 只要重復(fù)代碼片段都可使用
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
MyBatis版本升級(jí)導(dǎo)致OffsetDateTime入?yún)⒔馕霎惓?wèn)題復(fù)盤
這篇文章主要介紹了MyBatis版本升級(jí)導(dǎo)致OffsetDateTime入?yún)⒔馕霎惓?wèn)題復(fù)盤,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08Java中Object.equals和String.equals的區(qū)別詳解
這篇文章主要給大家介紹了Java中Object.equals和String.equals的區(qū)別,文中通過(guò)一個(gè)小示例讓大家輕松的明白這兩者的區(qū)別,對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-04-04JavaEE實(shí)現(xiàn)基于SMTP協(xié)議的郵件發(fā)送功能
這篇文章主要為大家詳細(xì)介紹了JavaEE實(shí)現(xiàn)基于SMTP協(xié)議的郵件發(fā)送功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-05-055分鐘搭建SpringCloud Eureka服務(wù)注冊(cè)中心的實(shí)現(xiàn)
這篇文章主要介紹了5分鐘搭建SpringCloud Eureka服務(wù)注冊(cè)中心的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03使用RocketMQTemplate發(fā)送帶tags的消息
這篇文章主要介紹了使用RocketMQTemplate發(fā)送帶tags的消息,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07Java隨機(jī)生成姓名,手機(jī)號(hào),住址代碼示例
這篇文章主要介紹了Java隨機(jī)生成姓名,手機(jī)號(hào),住址代碼示例,屬于Java基礎(chǔ)方面的內(nèi)容,具有一定參考價(jià)值,需要的朋友可以了解下。2017-11-11