mybatis中映射文件include標(biāo)簽的應(yīng)用
mybatis映射文件include標(biāo)簽應(yīng)用

MyBatis中sql標(biāo)簽定義SQL片段,include標(biāo)簽引用,可以復(fù)用SQL片段可以使用標(biāo)簽提取出來,在使用的地方使用標(biāo)簽引用即可.sql標(biāo)簽中id屬性對(duì)應(yīng)include標(biāo)簽中的refid屬性。通過include標(biāo)簽將sql片段和原sql片段進(jìn)行拼接成一個(gè)完整的sql語句進(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)簽中通過${}取出對(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)行輸出映射,只有查詢出來的列名和pojo中的屬性名一致,該列才可以映射成功。
如果查詢出來的列名和pojo的屬性名不一致,通過定義一個(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)文章
springboot通過SchedulingConfigurer實(shí)現(xiàn)多定時(shí)任務(wù)注冊(cè)及動(dòng)態(tài)修改執(zhí)行周期(示例詳解)
這篇文章主要介紹了springboot通過SchedulingConfigurer實(shí)現(xiàn)多定時(shí)任務(wù)注冊(cè)及動(dòng)態(tài)修改執(zhí)行周期,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-06-06
為什么wait和notify必須放在synchronized中使用
這篇文章主要介紹了為什么wait和notify必須放在synchronized中使用,文章圍繞主題的相關(guān)問題展開詳細(xì)介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考以參考一下2022-05-05
SparkSQL讀取hive數(shù)據(jù)本地idea運(yùn)行的方法詳解
這篇文章主要介紹了SparkSQL讀取hive數(shù)據(jù)本地idea運(yùn)行的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09
Java 兩種延時(shí)thread和timer詳解及實(shí)例代碼
這篇文章主要介紹了Java 兩種延時(shí)thread和timer詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2017-02-02
Java實(shí)現(xiàn)一個(gè)簡(jiǎn)單的文件上傳案例示例代碼
這篇文章主要介紹了Java實(shí)現(xiàn)一個(gè)簡(jiǎn)單的文件上傳案例,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07
java使用tess4j進(jìn)行圖片文字識(shí)別功能
Tess4J?是Java?(JNA)?對(duì)?Tesseract?OCR?API?的封裝,Tess4J是java直接可使用的jar包,而Tesseract?OCR是支持Tess4J進(jìn)文件文字識(shí)別的基礎(chǔ),Tess4J可直接使用Maven方式引入,這篇文章主要介紹了java使用tess4j進(jìn)行圖片文字識(shí)別,需要的朋友可以參考下2023-04-04
Java對(duì)int[]數(shù)組做新增刪除去重操作代碼
這篇文章主要介紹了Java里面對(duì)int[]數(shù)組做新增刪除去重實(shí)現(xiàn),這里記錄下使用int[]數(shù)組對(duì)數(shù)組進(jìn)行新增刪除去重等操作,用來更加了解java里面的集合類思想,需要的朋友可以參考下2023-10-10

