Mybatis-Plus與MySql查詢結果出現(xiàn)差異

1、要把以下的一段sql轉換成為java語句

SELECT DISTINCT

????c.company_code AS companyCode,

????c.user_name AS userName

FROM user AS c

WHERE CHAR_LENGTH(c.user_name) = 11 AND c.user_name LIKE '1%'

????AND NOT EXISTS (SELECT 1 FROM temp_phone AS p WHERE p.phone = c.user_name)

2、起初我用的查詢如下,發(fā)現(xiàn)結果與SQL執(zhí)行結果數據量出現(xiàn)了很大的差異,結果發(fā)現(xiàn)likeLeft("user_name", "1")并不能替換c.user_name LIKE '1%'

public List<User> getUserList(List<String> phoneList) {

???? return? this.list(new QueryWrapper<User>()

????.likeLeft("user_name", "1")? ? ? ? ? ? ? ?

????.eq("CHAR_LENGTH(user_name)", 11)? ? ? ? ? ? ? ?

????.notIn("user_name", phoneList));

}

3、于是最后修改為

public List<User> getUserList(List<String> phoneList) {

????List<User> userList = this.list(new QueryWrapper<User>()? ? ? ? ? ? ? ? ????????.eq("CHAR_LENGTH(user_name)", 11)? ? ? ? ? ? ? ?

????????.notIn("user_name", phoneList));

????return userList.stream().distinct().filter(user -> user.getUserName().startsWith("1")).collect(Collectors.toList());

}

4、至于為什么likeLeft("user_name", "1")不能替換c.user_name LIKE '1%',likeLeft到底是個什么情況還在研究中,記錄一下,研究好了再來補上

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容