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
相關文章
- 資料庫查詢語句資料庫
- ORACLE 資料庫 查詢語句與DML語句Oracle資料庫
- MySQL資料庫:7、SQL常用查詢語句MySql資料庫
- Mybatis 查詢語句結果集總結MyBatis
- 資料庫查詢優化:使用explain分析sql語句執行效率資料庫優化AISQL
- SQL server資料庫表碎片比例查詢語句SQLServer資料庫
- 使用sql語句查詢平均值,使用sql語句查詢資料總條數, not in 篩選語句的使用SQL
- MySQL資料庫詳解(一)SQL查詢語句是如何執行的?MySql資料庫
- Mysql 資料庫 -------- SQL語句進階查詢 ------- 前部分MySql資料庫
- Laravel 框架查詢執行的 SQL 語句Laravel框架SQL
- 輸入的查詢 SQL 語句,是如何執行的?SQL
- DQL(Date Query Language)資料庫查詢語句資料庫
- SQL語句將查詢結果插入到另一張表中SQL
- 檢視 Laravel 查詢資料語句Laravel
- sql查詢語句流程SQL
- SQL mother查詢語句SQL
- SQL查詢語句 (Oracle)SQLOracle
- SQL Server 查詢歷史執行的SQL語句SQLServer
- GaussDB SQL查詢語句執行過程解析SQL
- SQL 查詢語句的執行順序解析SQL
- JAVA 中使用 SQL 語句查詢 EXCEL 檔案資料JavaSQLExcel
- 資料查詢語句:DQL(Data Query Language)
- SQL單表查詢語句總結SQL
- 找到Oracle資料庫中效能最差的查詢語句BSOracle資料庫
- 一條 SQL 查詢語句是如何執行的?SQL
- Mybatis 中將 SQL 查詢記錄到控制檯MyBatisSQL
- MySQL關於根據日期查詢資料的sql語句MySql
- 查詢Oracle正在執行的sql語句及執行該語句的使用者OracleSQL
- 複製表結構和資料SQL語句SQL
- postgresql dba常用sql查詢語句SQL
- SSH框架控制檯輸出HQL語句和SQL語句的方法框架SQL
- mysql查詢語句MySql
- 一條查詢語句的執行流程
- Laravel 查詢資料庫欄位內容是 Json 陣列時的查詢語句Laravel資料庫JSON陣列
- MySQL 查詢常用操作(0) —— 查詢語句的執行順序MySql
- 【資料庫】SQL語句資料庫SQL
- 關係型資料庫查詢語言 SQL 和圖資料庫查詢語言 nGQL 對比資料庫SQL
- ORACLE結構化查詢語句Oracle
- mysql查詢效率慢的SQL語句MySql