Mybatis-Plus的SQL語句組拼原理說明
記錄查找自動組拼SQL語句的過程
首先在BaseMapper其中的一個方法下打個斷點(diǎn)

在斷點(diǎn)顯示的值欄找到相關(guān)的SQL
發(fā)現(xiàn)SQL語句在MappedStatement對象中,而sqlSource存的就是相關(guān)的sql語句


然后在MappedStatement這個對象打斷點(diǎn),看看到底是哪個對象對它進(jìn)行了操作

發(fā)現(xiàn)是AutoSqlInjector創(chuàng)建了MappedStatement

在AutoSqlInjector對象找到與selectById相關(guān)的一個方法,打斷點(diǎn)

SqlSource果然在這里創(chuàng)建出來了,createSqlSource就是具體過程,然后添加到MappedStatement對象中,此SQL完成組拼
在createSqlSource方法打下斷點(diǎn),進(jìn)入具體的組拼過程

方法sqlSelectColumns就是具體的組拼方法,一直在此方法進(jìn)行遞歸

在此方法中,迭代器在不斷迭代組拼

最后SQL全部完成組拼,存在集合對象中,就可以取出來了
學(xué)會從逆推到順推,學(xué)會怎樣打斷點(diǎn)是關(guān)鍵。
mybatisPlus注解版動態(tài)拼接sql
前段時間不是在實(shí)習(xí)嘛,公司用的是注解開發(fā)不用xml的,特此記錄注解版動態(tài)拼接sql,還有使用過程中踩坑集合。
先記錄1.0版本,以后遇到別的在完善就是。
其實(shí)就是在xml那種格式下面最外面一層用< /script > 標(biāo)簽包住就行了,其余部分用英文雙引號包住,表達(dá)式用單引號包住就ok了,@Param(“idMin”) Integer idMin與#{idMin}對應(yīng)。
不過我這里如果idMin為null那么between null and 20是查不出數(shù)值的,< /script > 標(biāo)簽是重點(diǎn),這種sql業(yè)務(wù)邏輯讀者以后自己改。
/**
* @author zzh
* @since 2021-01-26
*/
public interface GoodsMapper extends BaseMapper<Goods> {
@Select("<script>"
+ "select * from goods where id between"
+ "<if test='#{idMin}!=null'>" + "#{idMin} and "+"</if>"
+ "<if test='#{idMax}!=null'>" + "#{idMax}" + "</if>"
+ "</script>")
public List<Goods> select(@Param("idMin") Integer idMin, @Param("idMax") Integer idMax);
}
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
java使用RSA加密方式實(shí)現(xiàn)數(shù)據(jù)加密解密的代碼
這篇文章給大家分享java使用RSA加密方式實(shí)現(xiàn)數(shù)據(jù)加密解密,通過實(shí)例代碼文字相結(jié)合給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友參考下2019-11-11
mybatis-plus返回map自動轉(zhuǎn)駝峰配置操作
這篇文章主要介紹了mybatis-plus返回map自動轉(zhuǎn)駝峰配置操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11
idea設(shè)置@Author文件頭注釋的實(shí)現(xiàn)步驟
本文主要介紹了idea設(shè)置@Author文件頭注釋的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07
java動態(tài)線程池的簡單實(shí)現(xiàn)思路
本文主要介紹了java?動態(tài)線程池的簡單實(shí)現(xiàn)思路,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06

