? ? ? ?記錄一下,前端傳參中,傳給我參數是“categoryIds: ,1731557494586241026,1731569816263311362,1731569855534579713,1731858335179223042,1731858366821052418”
? ? ? 但是后端,因為我的mybati是in查詢,所以因為第一個是“,”。所以會導致系統報錯。
?
下面提供三個解決方法:
方法一:
找前端,讓前端改!!
方法二(修改mybatis):
<if test="pd.categoryIds != null and pd.categoryIds.trim() != ''"><choose><when test="pd.categoryIds.startsWith(',')"><bind name="categoryIds" value="pd.categoryIds.substring(1)" /></when><otherwise><bind name="categoryIds" value="pd.categoryIds" /></otherwise></choose>AND a.category_id IN (${categoryIds})
</if>
? ? ? 在這個改進后的條件語句中,我們首先使用?trim()
?方法去除?categoryIds
?字符串兩端的空格。然后使用?startsWith(',')
?方法判斷是否以逗號開頭,如果是則使用?substring(1)
?方法去除開頭的逗號。最后,我們將處理后的?categoryIds
?值賦給一個新的變量?categoryIds
,并在條件語句中使用它來構建查詢條件。
方法三:
if (categoryIds.startsWith(",")) {categoryIds = categoryIds.substring(1);}String[] categoryIdArr = categoryIds.split(",");List<Long> categoryIdList = new ArrayList<>();for (String categoryId : categoryIdArr) {categoryIdList.add(Long.parseLong(categoryId.trim()));}
- 如果?
categoryIds
?字符串以逗號開頭,那么使用?substring(1)
?方法去掉開頭的逗號。這是因為在查詢條件中,逗號前面不應該有任何字符。 - 使用?
split(",")
?方法將?categoryIds
?字符串按逗號分隔成多個字符串,然后賦值給一個名為?categoryIdArr
?的字符串數組。這個數組包含了多個類別 ID 字符串。 - 創建一個名為?
categoryIdList
?的空列表,用于存儲將要查詢的類別 ID。 - 遍歷?
categoryIdArr
?數組中的每個字符串,在遍歷過程中,使用?Long.parseLong()
?方法將字符串解析成?Long
?類型,并且使用?trim()
?方法去除字符串兩端的空格。然后,將解析后的?Long
?類型值添加到?categoryIdList
?列表中。 - 最后,當循環遍歷完成后,
categoryIdList
?列表中包含了多個類別 ID 的?Long
?類型值,這個列表就可以用于查詢數據了。