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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解springboot+aop+Lua分布式限流的最佳實(shí)踐
這篇文章主要介紹了詳解springboot+aop+Lua分布式限流的最佳實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06使用mybatis的@Interceptor實(shí)現(xiàn)攔截sql的方法詳解
攔截器是一種基于 AOP(面向切面編程)的技術(shù),它可以在目標(biāo)對象的方法執(zhí)行前后插入自定義的邏輯,本文給大家介紹了使用mybatis的@Interceptor實(shí)現(xiàn)攔截sql的方法,需要的朋友可以參考下2024-03-03SpringBoot實(shí)現(xiàn)單文件與多文件上傳
本次例子不基于第三方存儲(chǔ)(如七牛云對象存儲(chǔ)、阿里云對象存儲(chǔ)、騰訊云對象存儲(chǔ)等),僅基于本地存儲(chǔ)。本文主要內(nèi)容如下:公共文件存儲(chǔ)代碼;單文件上傳代碼;多文件上傳代碼2021-05-05SpringBoot在IDEA中實(shí)現(xiàn)熱部署的步驟
這篇文章主要介紹了SpringBoot在IDEA中實(shí)現(xiàn)熱部署的步驟,幫助大家更好的理解和使用springboot框架,感興趣的朋友可以了解下2020-11-11java web個(gè)人通訊錄系統(tǒng)設(shè)計(jì)
這篇文章主要為大家詳細(xì)介紹了java web個(gè)人通訊錄系統(tǒng)設(shè)計(jì),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01Spring Boot項(xiàng)目@RestController使用重定向redirect方式
這篇文章主要介紹了Spring Boot項(xiàng)目@RestController使用重定向redirect方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09解析ConcurrentHashMap:成員屬性、內(nèi)部類、構(gòu)造方法
ConcurrentHashMap是由Segment數(shù)組結(jié)構(gòu)和HashEntry數(shù)組結(jié)構(gòu)組成。Segment的結(jié)構(gòu)和HashMap類似,是一種數(shù)組和鏈表結(jié)構(gòu),今天給大家普及java面試常見問題---ConcurrentHashMap知識(shí),一起看看吧2021-06-06