mybatis-plus:xml拼接sql方式
mybatis-plus:xml拼接sql
foreach操作map
<if test = "vo.map!= null and vo.map.size() > 0"> <foreach item="item" index="key" collection="vo.map"> <if test = "key != null and key != 'assetType'"> // jsonParam為json類型字段 and JSON_EXTRACT(jsonParam, '$.${key}') = #{item} </if> <if test = "key != null and key == 'assetType'"> and ${key} = #{item} </if> </foreach> </if>
foreach操作List
<if test="assetCodes != null and list.size > 0"> and field in <foreach collection="list" item="e" index="index" open="(" close=")" separator=","> #{e} </foreach> </if>
foreach操作String
<if test="vo.departmentCodeList != null and vo.departmentCodeList != ''"> AND r.department_code in <foreach item="departmentCode" collection="vo.departmentCodeList.split(',')" open="(" separator="," close=")"> #{departmentCode} </foreach> </if>
mybatis-plus動(dòng)態(tài)拼接sql語句
解釋
${ew.customSqlSegment}
是 MyBatis-Plus 中用于在 SQL 語句中插入自定義 SQL 片段的占位符。
ew
是指 Wrapper
對象(通常是 QueryWrapper
或 UpdateWrapper
),而 customSqlSegment
是這個(gè)對象中的自定義 SQL 片段。
用途
這個(gè)占位符通常用于動(dòng)態(tài)拼接 SQL 語句
允許在特定的 SQL 語句部分插入自定義的條件、過濾器或者其他 SQL 片段。
例子
QueryWrapper<MsCustomer> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("status", "active"); // 動(dòng)態(tài)添加一個(gè)自定義的 SQL 片段 queryWrapper.apply("custom_column > {0}", someValue); List<MsCustomer> customers = msCustomerMapper.selectList(queryWrapper);
在 Mapper XML 文件中,可以像這樣使用 ${ew.customSqlSegment}
:
<select id="selectCustomers" resultType="MsCustomer"> SELECT * FROM ms_customer ${ew.customSqlSegment} </select>
作用
customSqlSegment
允許你通過編程方式動(dòng)態(tài)生成 SQL 語句中的某些部分,從而實(shí)現(xiàn)更靈活的查詢和操作。
例如:
如果在代碼中調(diào)用了 apply()
方法或其他添加條件的方法,這些條件會(huì)被自動(dòng)拼接到 ${ew.customSqlSegment}
處,從而生成最終的 SQL 語句。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java鏈表的天然遞歸結(jié)構(gòu)性質(zhì)圖文與實(shí)例分析
這篇文章主要介紹了Java鏈表的天然遞歸結(jié)構(gòu)性質(zhì),結(jié)合圖文與實(shí)例形式分析了java鏈表中遞歸操作的原理、實(shí)現(xiàn)技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下2020-03-03Spring?boot?CommandLineRunner啟動(dòng)任務(wù)傳參實(shí)例詳解
在使用SpringBoot構(gòu)建項(xiàng)目時(shí),我們通常有一些預(yù)先數(shù)據(jù)的加載,下面這篇文章主要給大家介紹了關(guān)于Spring?boot?CommandLineRunner啟動(dòng)任務(wù)傳參的相關(guān)資料,需要的朋友可以參考下2022-06-06springboot集成Feign的實(shí)現(xiàn)示例
Feign是聲明式HTTP客戶端,用于簡化微服務(wù)之間的REST調(diào)用,本文就來介紹一下springboot集成Feign的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-11-11Spring如何基于注解顯式實(shí)現(xiàn)自動(dòng)裝配
這篇文章主要介紹了Spring如何基于注解顯式實(shí)現(xiàn)自動(dòng)裝配,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08springboot如何使用yml文件方式配置shardingsphere
這篇文章主要介紹了springboot如何使用yml文件方式配置shardingsphere問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09Java內(nèi)部類的實(shí)現(xiàn)原理與可能的內(nèi)存泄漏說明
這篇文章主要介紹了Java內(nèi)部類的實(shí)現(xiàn)原理與可能的內(nèi)存泄漏說明,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-10-10