mybatis執行查詢語句查詢不到結果,控制檯輸出sql語句複製到資料庫中能查到資料
今天用mybatis查詢語句的時候,控制檯輸出的sql語句可以在mysql中可以正確執行,但是查詢出來就是沒有資料。
原查詢語句如下(為展示問題明確,將sql進行了簡化):
<select id="getListByQueryValue" parameterType="Map" resultType="Map">
SELECT
*
FROM
province
<where>
<if test="strWhere != null and strWhere!= ''">
AND ( #{strWhere} )
</if>
</where>
</select>
此sql可以在mysql中正確執行,但是查詢不到資料。
解決辦法是:將查詢條件中的“#”替換成“$”.
原因如下:
MyBatis看到 #{}會認為你在給sql中的變數賦值,就像JDBC程式設計中給問號賦值一樣(自動在前後加單引號)也就是說,他把你傳入的字串並沒有當做多個值,而是當做一個大的字串,所以查詢不到值
而MyBatis看到${}的時候會直接將之替換成變數的值而不做任何處理。
mybatis $ # 具體區別可以參考:這裡寫連結內容
作者:jiankunking 出處:http://blog.csdn.net/jiankunking
相關文章
- 資料庫查詢語句資料庫
- Mybatis 查詢語句結果集總結MyBatis
- ORACLE 資料庫 查詢語句與DML語句Oracle資料庫
- MySQL資料庫:7、SQL常用查詢語句MySql資料庫
- 查詢資料庫中的topsql語句資料庫SQL
- 資料庫查詢優化:使用explain分析sql語句執行效率資料庫優化AISQL
- SQL server資料庫表碎片比例查詢語句SQLServer資料庫
- 小覷資料庫(SqlServer)查詢語句執行過程資料庫SQLServer
- 使用sql語句查詢平均值,使用sql語句查詢資料總條數, not in 篩選語句的使用SQL
- 查詢執行慢的SQL語句SQL
- 查詢sql語句執行次數SQL
- 查詢正在執行的SQL語句SQL
- MySQL資料庫詳解(一)SQL查詢語句是如何執行的?MySql資料庫
- SQL語句將查詢結果插入到另一張表中SQL
- Mysql 資料庫 -------- SQL語句進階查詢 ------- 前部分MySql資料庫
- 查詢資料庫隱含引數的sql語句資料庫SQL
- DQL(Date Query Language)資料庫查詢語句資料庫
- 檢視 Laravel 查詢資料語句Laravel
- 輸入的查詢 SQL 語句,是如何執行的?SQL
- Laravel 框架查詢執行的 SQL 語句Laravel框架SQL
- 查詢Oracle正在執行的SQL語句OracleSQL
- SQL SERVER 資料庫查詢表和欄位資訊語句SQLServer資料庫
- 查詢資料庫裡執行大於2s的語句資料庫
- SQL語句查詢表結構SQL
- SQL查詢語句 (Oracle)SQLOracle
- SQL server 查詢語句SQLServer
- sql查詢語句流程SQL
- SQL mother查詢語句SQL
- 找到Oracle資料庫中效能最差的查詢語句BSOracle資料庫
- 資料查詢語句:DQL(Data Query Language)
- (轉)Oracle常用資料字典查詢語句Oracle
- 查詢正在執行的sql語句及該語句執行的時間SQL
- SQL 查詢語句的執行順序解析SQL
- 查詢orcale執行的SQL語句記錄SQL
- T-sql語句查詢執行順序SQL
- GaussDB SQL查詢語句執行過程解析SQL
- SQL Server 查詢歷史執行的SQL語句SQLServer
- JAVA 中使用 SQL 語句查詢 EXCEL 檔案資料JavaSQLExcel