對于數據庫中存儲的json數組,使用like匹配會出現精準度問題。本文介紹了如何使用mysql 5.7.8及其之后的版本的原生json數據類型支持,通過json_contains來實現精準匹配。
純數組匹配
string tipid = "1617784249885577217"; wrapper.and(new consumer<querywrapper<object>>() { @override public void accept(querywrapper<object> querywrapper) { querywrapper.last("json_contains(goods_tips_id_list,'" + tipid + "')"); } });
對象數組匹配
由于前端傳過來的數據是json字符串,直接使用json_contains無法實現對象數組的匹配。需要先將對象數組轉換成json字符串,再進行匹配。
List<Long> tipIds = new ArrayList<>(); tipIds.add(1615226392250040321L); tipIds.add(1617784249885577217L); tipIds.add(1617784414117744641L); String tipIdsJson = JSON.toJSONString(tipIds); wrapper.and(new Consumer<QueryWrapper<Object>>() { @Override public void accept(QueryWrapper<Object> queryWrapper) { queryWrapper.last("json_contains(goods_tips_id_list,'" + tipIdsJson + "')"); } });
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END