mybatis引用其他文件中的sql片段的實現(xiàn)
前言
有一些通用的sql,在整個項目中都有可能使用的到, 但是我不太想定義java接口,結(jié)合著java邏輯來實現(xiàn)功能, 又或者在每一處的mapper.xml內(nèi)都定義sql片段, 那么如果需要調(diào)整sql,我就需要調(diào)整好多處相同的代碼. 如何后期維護方便,則需要單獨創(chuàng)建一個mapper.xml文件, 只用來存放這些sql片段,沒有接口的定于,接著業(yè)務中需要用到該sql片段的地方,就去引用這個外部的sql 片段即可.
實例
全局的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"> <!--注意再當前頁面引用sql 片段不能直接寫SQL1, 要namespase + sqlid 才可以,否則會報錯--> <include refid="commonSQL.SQL1"/> </sql> </mapper>
業(yè)務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片段的實現(xiàn)的文章就介紹到這了,更多相關(guān)mybatis引用其他文件sql片段內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解springboot+aop+Lua分布式限流的最佳實踐
這篇文章主要介紹了詳解springboot+aop+Lua分布式限流的最佳實踐,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-06-06使用mybatis的@Interceptor實現(xiàn)攔截sql的方法詳解
攔截器是一種基于 AOP(面向切面編程)的技術(shù),它可以在目標對象的方法執(zhí)行前后插入自定義的邏輯,本文給大家介紹了使用mybatis的@Interceptor實現(xiàn)攔截sql的方法,需要的朋友可以參考下2024-03-03SpringBoot在IDEA中實現(xiàn)熱部署的步驟
這篇文章主要介紹了SpringBoot在IDEA中實現(xiàn)熱部署的步驟,幫助大家更好的理解和使用springboot框架,感興趣的朋友可以了解下2020-11-11Spring Boot項目@RestController使用重定向redirect方式
這篇文章主要介紹了Spring Boot項目@RestController使用重定向redirect方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教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知識,一起看看吧2021-06-06