91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

不敢相信,相同SQL下Mybatis查詢結果和數據庫竟然不一樣!

發布時間:2020-07-09 23:20:19 來源:網絡 閱讀:2961 作者:wx5d30212829a35 欄目:編程語言

一、問題描述

mybatis查詢無結果, 數據庫運行相同sql查詢出結果, 如下

  • 這是數據庫記錄


    不敢相信,相同SQL下Mybatis查詢結果和數據庫竟然不一樣!

    image.png

  • 這是mybatis查詢出的結果, 記錄條數0


    不敢相信,相同SQL下Mybatis查詢結果和數據庫竟然不一樣!

    image.png

  • 這是直接將控制臺一模一樣的sql查詢語句放到Navicat執行的結果, 記錄條數1


    不敢相信,相同SQL下Mybatis查詢結果和數據庫竟然不一樣!

    image.png

二、解決辦法

where條件后的username = '${username}'and password = '${password}'置為同一行

????<select?id="selectByUsernameAndPassword"?resultMap="BaseResultMap"?parameterType="string">
????????SELECT
????????<include?refid="Base_Column_List"?/>
????????FROM?user
????????where?username?=?'${username}'
????????and?password?=?'${password}'
????</select>
????<select?id="selectByUsernameAndPassword"?resultMap="BaseResultMap"?parameterType="string">
????????SELECT
????????<include?refid="Base_Column_List"?/>
????????FROM?user
????????where?username?=?'${username}'?and?password?=?'${password}'
????</select>

可以看到, 查詢結果一致


不敢相信,相同SQL下Mybatis查詢結果和數據庫竟然不一樣!

image.png

三、異常分析

  1. 很多小伙伴都遇到過類似問題, 很懵逼, 難不成mybatis bug? 沒, 原因可能千萬種, 但根本原因基本上就一個, 那就是實際查詢語句與我們看到的sql不一致, 即, sql寫的有問題

  2. 再來分析一下上面這個問題, 看似xml sql沒有問題, 控制臺打印的sql也沒問題, 但放到數據庫執行結果就不一致了, 因為, xml sql兩個條件換行了, mybatis實際執行的sql是這樣的:

SELECT?id,?username,?password?FROM?user?where?username?=?'aaa'?#?''?and?password?=?'xxx'

并不是控制臺打印的sql:

SELECT?id,?username,?password?FROM?user?where?username?=?'aaa'?#?''?and?password?=?'xxx'

查詢結果自然不一致

四、總結

本文只是提供一種解決類似問題的思路, 出錯原因可能不一樣, 但問題關鍵就是實際執行的sql不一致, 才會導致mybatis和mysql查詢結果不一致, 所以, 仔細點, 檢查sql

另, 本文是為了測試sql注入, 所以用的${username}, 實際應該使用#{}


點擊獲取?附送學習進階架構資料、PDF書籍文檔、面試資料

不敢相信,相同SQL下Mybatis查詢結果和數據庫竟然不一樣!

不敢相信,相同SQL下Mybatis查詢結果和數據庫竟然不一樣!


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

大姚县| 横山县| 平顺县| 涡阳县| 小金县| 阳朔县| 含山县| 北京市| 定西市| 泸溪县| 攀枝花市| 虞城县| 卓资县| 甘孜| 台前县| 民乐县| 商城县| 涿州市| 虞城县| 营山县| 甘德县| 汾阳市| 磐安县| 泌阳县| 平南县| 八宿县| 简阳市| 定边县| 华宁县| 鹰潭市| 如皋市| 康乐县| 高州市| 天镇县| 中西区| 绿春县| 修武县| 游戏| 海口市| 蕲春县| 台南市|