MyBatis 中查詢(xún)數(shù)據(jù):硬編碼還是動(dòng)態(tài)參數(shù)?

MyBatis 中查詢(xún)數(shù)據(jù):硬編碼還是動(dòng)態(tài)參數(shù)?

硬編碼與動(dòng)態(tài)參數(shù)在 mybatis 中的選擇

當(dāng)使用 MyBatis 從數(shù)據(jù)庫(kù)中查詢(xún)特定條件的數(shù)據(jù)時(shí),需要考慮在 sql 語(yǔ)句中是直接寫(xiě)入條件還是動(dòng)態(tài)傳入?yún)?shù)。以查詢(xún) type=cat 的 animal 數(shù)據(jù)為例,我們可以直接在 SQL 語(yǔ)句中指定 type 條件,也可以在 mapper 方法中將 type 作為參數(shù)傳入。

對(duì)于此例,直接在 SQL 語(yǔ)句中寫(xiě)死 type 條件比較方便,但對(duì)于需要更為靈活的方法時(shí),例如根據(jù)不同類(lèi)型參數(shù)獲取數(shù)據(jù),則建議在 Mapper 方法中動(dòng)態(tài)傳入?yún)?shù)。這樣可以避免硬編碼,更靈活的處理不同條件的查詢(xún)。

在 Service 層,可以根據(jù)業(yè)務(wù)需求考慮是否需要將傳入 Mapper 方法的參數(shù)抽象成更通用的方法。例如,如果有多個(gè)方法需要根據(jù) type 參數(shù)獲取數(shù)據(jù),則可以在 Service 層定義一個(gè)根據(jù)類(lèi)型枚舉獲取數(shù)據(jù)的方法。Controller 層只需調(diào)用該方法并傳入相應(yīng)的 type 枚舉值即可。

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊10 分享