mybatis引用其他文件中的sql片段的實(shí)現(xiàn)
前言
有一些通用的sql,在整個(gè)項(xiàng)目中都有可能使用的到, 但是我不太想定義java接口,結(jié)合著java邏輯來實(shí)現(xiàn)功能, 又或者在每一處的mapper.xml內(nèi)都定義sql片段, 那么如果需要調(diào)整sql,我就需要調(diào)整好多處相同的代碼. 如何后期維護(hù)方便,則需要單獨(dú)創(chuàng)建一個(gè)mapper.xml文件, 只用來存放這些sql片段,沒有接口的定于,接著業(yè)務(wù)中需要用到該sql片段的地方,就去引用這個(gè)外部的sql 片段即可.
實(shí)例
全局的mapper.xml
由于我們只有sql 片段,不需要映射Dao層接口, 所以namespase可以自定義
<?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="commonSQL">
<sql id="SQL1">
select * from 表名 where id = #{id}
</sql>
<sql id="SQL2">
<!--注意再當(dāng)前頁面引用sql 片段不能直接寫SQL1, 要namespase + sqlid 才可以,否則會(huì)報(bào)錯(cuò)-->
<include refid="commonSQL.SQL1"/>
</sql>
</mapper>業(yè)務(wù)mapper.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.xxx.xxx.xxxMapperDao">
<select id="querySQL1" resultType="java.util.HashMap" parameterType="java.util.HashMap">
select * from (
<include refid="commonSQL.SQL1"/>
)
</select>
<select id="querySQL2" resultType="java.util.HashMap" parameterType="java.util.HashMap">
select * from 表名 a
left join (
<include refid="commonSQL.SQL1">
<!-- 如果有參數(shù)和sql片段映射不上,可以通過property 重新定義一下變量名稱即可-->
<property name="id" value="#{ID}">
</include>
) b
on a.id = b.id
</select>
</mapper>到此這篇關(guān)于mybatis引用其他文件中的sql片段的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)mybatis引用其他文件sql片段內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java實(shí)現(xiàn)轉(zhuǎn)換圖片格式的示例代碼
在日常的軟件開發(fā)中,處理圖像文件是一項(xiàng)常見任務(wù),這篇文章將實(shí)現(xiàn)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的Java程序,用于將一種圖片格式轉(zhuǎn)換為另一種格式,需要的可以了解下2025-02-02
Java中LinkedHashMap的實(shí)現(xiàn)詳解
LinkedHashMap是Java中的一個(gè)Map容器,它繼承自HashMap,并且還可以對(duì)元素進(jìn)行有序存儲(chǔ),本文將介紹LinkedHashMap的實(shí)現(xiàn)原理以及使用方法,并且提供相應(yīng)的測(cè)試用例和全文小結(jié),需要的可以參考下2023-09-09

