mybatis傳參正常且直接執行sql能獲得正確結果但通過mybatis卻查詢不到結果的原因:oracle資料庫中使用了char型別的欄位
問題:
在使用mybatis的過程中,多次檢驗傳參、sql語句等查詢條件,並未發現存在錯誤,直接執行後臺日誌中的sql也能夠查到正確結果,但是後臺mybatis返回的值一直是空。
原因:
經過測試發現是資料庫表結構中使用了char作為欄位型別,而引數的長度和char的長度不符。在oracle中如果char內容長度不夠,那麼會自動用空格補滿。比如我們在char2中插入‘0’,那麼資料庫會自動補齊為‘0 ’,當我們從mybatis傳參‘0’進行比較時,‘0’和‘0 ’不相同,返回值就會是空。
解決方法:
1.修改表結構或者傳參的值,使兩者長度適配
2.修改dao層的xml語句,去除多餘的空格,例如:select * from tb2 where trim(tb2.id)=#{id}
相關推薦
mybatis傳參正常且直接執行sql能獲得正確結果但通過mybatis卻查詢不到結果的原因:oracle資料庫中使用了char型別的欄位
問題: 在使用mybatis的過程中,多次檢驗傳參、sql語句等查詢條件,並未發現存在錯誤,直接執行後臺日誌中的sql也能夠查到正確結果,但是後臺mybatis返回的值一直是空。 原因: 經過測試發現是資料庫表結構中使用了char作為欄位型別,而引數的長度和char的長度不符。在oracle中如果cha
mybatis使用char型別欄位查詢oracle資料庫時結果返回null
同事在學mybatis時,遇到了一個問題就是,使用char型別欄位作為查詢條件時一直都查不出資料,其他型別的則可以。 使用的資料庫是oracle,查詢條件欄位型別是char(50),java程式碼對應的是String型別。 後來經過排查,是由於在oracle
SQL Server中的text型別欄位要如何查詢?
當把某個資料型別為text的欄位作為查詢條件時,會報錯: 例1: use Teachers delete from 教師表 where Address='北海' 資料型別 text 和 va
MyBatis直接執行sql語句mapper
表示 batis 執行sql sql col cda [] result 內容 <select id="queryBySql" resultType="HashMap"> <![CDATA[ ${sql}
SQL語句MyBatis傳參什麼時候用#,什麼時候用$
程式碼截圖如下: <select id="get_" parameterType="map" resultMap="user"> select * FROM `use
MyBatis直接執行SQL的工具SqlMapper
可能有些人也有過類似需求,一般都會選擇使用其他的方式如Spring-JDBC等方式解決。 能否通過MyBatis實現這樣的功能呢? 為了讓通用Mapper更徹底的支援多表操作以及更靈活的操作,在<b>2.2.0版本</b>增加了一個可以直接執行SQ
Hibernate SQLQuery查詢返回空List,在mysql命令下直接執行sql語句可以正常得到記錄
遇到的問題如標題所述。 用Hibernate的SQLQuery來list記錄, 背景: 1、前一天還能正常返回資料,今天就不可以用了,程式碼絕對沒有變動過。 2、是多表查詢,且在where條件中還使用了select查詢(就這樣套了很多層)。 3、以為是多表聯查有問題,百度之
[Spark][Python][DataFrame][SQL]Spark對DataFrame直接執行SQL處理的例子
hdfs temp div python people data name where afr [Spark][Python][DataFrame][SQL]Spark對DataFrame直接執行SQL處理的例子 $cat people.json {"name":"
推薦的MyBatis傳參方式List、數組等
word www rom open 方式 item log 詳細 batis MyBatis 推薦的傳參方式 如果要詳細的學習 MyBatis,推薦看這個教程:https://www.w3cschool.cn/mybatis/ 1. 單個參數 //接口方法 int getA
Mybatis傳參方式
con 多個 str parameter {0} 適合 表達 and 屬性。 傳遞多個參數的四種方式: 順序傳參:public User selectUser(String name,int deptId); <select id="selectUser" resu
Mybatis-傳參
影響 多參數 數據 對數 collect 動態sql 類名 sql 包含 單參數傳遞 在mapper文件使用動態SQL時,傳入參數的名稱任意。不影響參數傳入的結果 多參數傳遞 默認傳遞方式 自動將傳入的參數進行排序,並用arg1…argeN或者param1…
MyBatis傳參三種方式
MyBatis傳參 1、直接傳 Dao層的函式方法 Public User selectUser(String name,String area); 對應的Mapper.xml <select * from user where name =#{0} and are
net mvc3 直接執行sql語句
1) SQL語句查詢實體 var members = db.Members.SqlQuery( "select * from Member").ToList()
Django中直接執行SQL語句
歡迎加入python學習交流群 667279387 今天在django views.py看到同事寫的程式碼裡面有段關於資料庫查詢的語句。因為涉及多個表的查詢,所以django 的models的查詢無法滿足需求,所以直接執行了SQL語句。他是按照下面的方法實現
Hibernate直接執行SQL語句
又到週六時間了。我有一次幫公安局開發專案時,有這麼一個需求,在做統計報表的時候,我在Oralce資料中建立了一個檢視,按管轄單位進行了分組,計算了每個管轄單位涉案人數及接警人數等,資料庫檢視倒是出來了,但是前臺需求一個時間查詢,也就是客戶可以按時間檢索,可是檢視中,只能加上
IBatis 怎樣直接執行SQL語句
有時候,為了程式碼靈活,便於修改,要直接向IBatis傳入完整的SQL語句。ibatis map 檔案如下: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DT
NHibernate直接執行SQL進行插入
有時候,需要用NHibernate直接執行SQL進行資料insert或update。 怎麼寫呢?簡單一點的,可以直接拼湊出來的SQL,這樣寫: using NHibernate; StringBu
Linq to sql直接執行sql語句
查詢: 返回一個值 string strSql = "SELECT COUNT(0) FROM Person(NOLOCK)"; var query = dataContext.ExecuteQuery<int&
iBATIS.net直接執行sql語句
在用iBatis.net與資料庫打交道的過程中,發現iBatis.net拼接字串不能直接拷貝然後在dbms裡執行(獲取runtime時的sql語句都是帶@param1,@param2,@param3,...這樣的形式)。有時候sql語句一個小小的標點(都怪自己學藝不精,呵呵
MyBatis 傳參處理
一 MyBatis引數 可以傳入單個引數、多個引數,也可以封裝為Map,或物件傳入。 二 單個引數 對映器類UserMainMapper.java介面方法: User queryUserMainById(int id); 對映檔案UserMainMapper