1. 程式人生 > >oracle資料庫查詢,sql沒問題,資料庫也有資料,方法沒錯,專案執行就是查不出資料

oracle資料庫查詢,sql沒問題,資料庫也有資料,方法沒錯,專案執行就是查不出資料

這是我參與做的第一個商業專案,採用的是springboot+   mybatis-plus開發的。資料庫採用的是oracle。

這天我做了一個方法是根據兩個欄位查詢資料庫的資料列表,其中一個欄位是型別(type) 。方法很簡單,不一會兒就做出來了,這裡不得不感嘆mybatis-plus的強大,程式碼量很小!接下來就是測試了,由於資料庫已經有一條測試資料,所以直接啟動專案進行測試,可是結果查不出結果,頁面不報錯,控制檯也沒有報錯只是說查詢結果為空。

接下來就是排查過程了,檢視資料庫資料 確實有資料,把控制檯打印出來的sql放到資料庫中執行,能查到結果,debug斷點測試,引數能正常傳入!難道是方法錯了?剛好同項目組有個同事 葉子做類似的一個方法 也是根據兩個欄位查詢資料庫的資料列表,並且也有一個欄位是型別(type),我們這個專案資料庫都是有同一個同事設計的,所以type的型別都是一樣的 。可是同事做的類似的方法卻能查出來資料。因為是用的mybatis-plus的條件構造器,所以,方法幾乎一樣。所以方法應該也沒問題。各種方法都試過了沒有答案!剛好這時候同事的第二個累死的方法做出來也是查不出來資料,也是相同的情況,引數中有一個type。會不會問題就出在這個type上啊,然後我吧type引數去掉用另外一個引數查詢,結果是可以查到資料。那麼問題出來了,就是出在這個type上了!

仔細研究一下這幾個entity中的type屬性 沒什麼問題,會不會是資料庫有問題啊 ?基於對設計資料庫同事技術的信任,加之之前資料庫意志沒出現過問題,所以之前一直沒往這方面考慮,仔細研究發現每個表中type欄位的資料型別是char(6),定長六位字元,於是豁然開朗!我這同事 是“智者千慮,偶有一失”啊。我的資料庫表中儲存的type值只可能是四個,即 1.2.3.4,代表四種類型。都不足六位字元,所以被空格補齊,難怪查不出資料!

解決辦法:

1.溝通構建資料庫的同事,把type型別更改為varchar(),並且刪除之前的測試資料 ,重新錄入測試資料

2.資料庫不做更改,但是在sql語句中 where之後的出問題的條件欄位做處理  如我的處理方法: 。。。where  trim(type)

=#{type} 。。。(該方法不適用mybatis-plus的條件構造器,適用手寫的sql)

第一次寫部落格  有什麼錯誤 歡迎大神批評指正。謝謝!望大家避免類似的坑。同時祝各位大神程式暢行一路無bug!

相關推薦

oracle資料庫查詢sql問題資料庫資料方法沒錯專案執行就是資料

這是我參與做的第一個商業專案,採用的是springboot+   mybatis-plus開發的。資料庫採用的是oracle。 這天我做了一個方法是根據兩個欄位查詢資料庫的資料列表,其中一個欄位是型別(type) 。方法很簡單,不一會兒就做出來了,這裡不得不感嘆mybati

關係型資料庫查詢語言 SQL 和圖資料庫查詢語言 nGQL 對比

摘要:這篇文章將介紹圖資料庫 Nebula Graph 的查詢語言 nGQL 和 SQL 的區別。 > 本文首發於 Nebula Graph 官方部落格:https://nebula-graph.com.cn/posts/sql-vs-ngql-comparison/ ![sql-vs-ngql](

MyBatis模糊查詢報錯但資料的一種解決方案

今天在用MyBatis寫一個模糊查詢的時候,程式沒有報錯,但查不出來資料,隨即做了一個測試,部分程式碼如下: @Test public void findByNameTest() throws IOException { String resource = "SqlMa

sql 中 not in 或者 not exists 資料

可能原因:B表中存在NULL值 例子: 1、查不出資料 not in select name from a where name not in (select distinct name from b )   not exists  select name from a w

SQL 一個使用者表中一個積分欄位假如資料庫100多萬個使用者若要在每年第一天凌晨將積分清零你將考慮什麼你將想什麼辦法解決?

                    alter table drop column score;                   alter table add colunm score int;                   可能會很快,但是需要試驗,試驗

分散式資料庫當然主鍵的需求但是為什麼直接使用uuid作為主鍵呢?

1. UUID生成速率低下 Java的UUID依賴於SecureRandom.nextBytes方法,而SecureRandom又依賴於作業系統提供的隨機數源,在Linux系統下,它的預設依賴是/dev/random,而這個源是阻塞的。最可怕的是,這個nextBytes方法

如何在Oracle查詢一個表被其他資料庫物件引用[z]

這兩天老大讓我再oracle中把要替換的表被其他物件引用之處找出來,整理一份表,接到這個任務,我是一臉懵逼,怎麼找?大海撈針麼?問同事、查資料,自己研究,最後整理一下僅供大家參考,同時以備將來回顧。本篇只涉及表被其他資料庫物件引用,不涉及外來鍵,想尋找外來鍵的,自己檢視下面附有的連結。 首先有下列幾種方式:

MySQL大資料量分頁查詢方法及其優化 ---方法1: 直接使用資料庫提供的SQL語句 ---語句樣式: MySQL中,可用如下方法: SELECT * FROM 表名稱 LIMIT M,N ---適

測試實驗 1.   直接用limit start, count分頁語句, 也是我程式中用的方法: select * from product limit start, count 當起始頁較小時,查詢沒有效能問題,我們分別看下從10, 100, 1000, 10000開始分頁的執行時間(每頁取20條), 如

原!tomcat啟動超時(打印了幾行日誌後面了。報錯處於啟動狀態直到超時)

str tro 啟動項 dao 配置 spa 配置文件 size 結果 項目框架:spring+struts2+mybatis 今天優化代碼,改了一堆mybatis dao和xml文件,啟動項目時,就出現如標題描述的狀況:打印了幾行日誌,後面就不打印了,也不報錯,處於啟動狀

mybits中mapperselectOne查詢資料的問題selectOne空指標問題select空指標問題

 selectOne查詢不出資料的問題AiWechatUser iWechatUser = new AiWechatUser(); iWechatUser.setOpenid("XXX"); iWechatUser= wechartUserDao.selectOne(iWechatUser

oracle引數查詢避免SQL注入

前言。 可以參考上一篇轉載的文章,這裡只做簡單介紹。 所謂SQL注入,就是通過把SQL命令插入到Web表單提交或輸入域名或頁面請求的查詢字串,最終達到欺騙伺服器執行惡意的SQL命令。具體來說,它是利用現有應用程式,將(惡意的)SQL命令注入到後臺資料庫引擎執行的能力,它可以

Oracle top 查詢TOP SQL

有時Oracle資料庫伺服器,系統CPU爆高,通過Top命令可以檢視到佔用CPU最高的程序 我們需要記住前幾個TOP的pid號,帶入下面的SQL,到資料庫中查詢執行的程序、伺服器、使用者、SQL、等待等資訊 select t.SQL_ID,     &

mybatis查詢資料結果為null

錯誤的結果為: 程式裡面寫的sql語句放在資料庫裡面去查詢能查詢到資料,但是程式裡面查詢時候,返回的結果為null 記錄一下 我出現的原因是: 資料庫的欄位  account_id    account_name java的實體類:accountId   accoun

GreenDao查詢時會資料解決方法

greendao 實體類的id 需要設定為Long 例如根據ID查詢資料 我這ID是long型別, 執行for迴圈第一次能查到, 第二次就查不到。 根據多次實驗,把ID轉成Long型別再執行查詢就沒有問題了, @Override public void updateI

Android jar包裡面assets目錄下檔案APP的assets裡面檔案如何讀呢?

jar 包中可以寫 assets資料夾, APP裡面同時也可以寫assets,但是隻要assets下面的檔案不同名就可以了,忒棒 !!! 如果assets目錄下有檔案的,

【小菜鳥】本人部落格沒有任何侵權的想法僅僅是總結了一些前輩們的經驗做了一些小筆記發表。 在以往學習過程中遇到太多太多的小問題網上都答案只不過太多太雜解決問題的答案是可遇不可求 總是事倍功半。特此總結一些自己的小經驗希望能夠幫助大家。

小菜鳥 本人部落格,沒有任何侵權的想法,僅僅是總結了一些前輩們的經驗,做了一些小筆記發表。 在以往學習過程中,遇到太多太多的小問題,網上都有答案,只不過太多太雜,解決問題的答案也是可遇不可求, 總是事倍功半。特...

用eclipse開發servlet使用System.out.println()在console打印資料的問題

      很多的時候當我們發現我們寫的servlet出了問題的時候都會下意識的去在相關的地方插入System.out.println()打印出當前獲得的資料吧,但是在開發servlet的時候,你就會發現,自己剛寫的列印語句執行工程之後並沒有打印出來,你就會想了吧,大多的新

oracle查詢結果字串用於查詢條件in中,資料

oracle查詢結果字串用於查詢條件in中,查不到資料,例如: 1、select a.remark from test1 a where 1=1 2、select ”” || REPLACE(a.remark , ‘,’, ”’,”’) || ”” fr

查詢一個對象的屬性值兩種方法

查詢 復制 方法 spa 自動 span blog 字符 class  查詢一個對象的屬性值有兩種方法    var obj = { name: ‘lyl‘ }; // 第一種方法 console.log(obj[‘name‘]);

Springboot 整合mybatis可能出現的小問題之selectByPrimaryKey(id)查詢資料

作為一個菜鳥,在學習Springboot的時候是一頭霧水,出現問題由於不知道原理所以解決起來很是坎坷,在這裡記錄下小小的經驗。 出現問題如下:     通過指定id查詢資料,發現結果總是查不到,debug除錯發現程式沒有任何異常,就是查詢到的user為空,資料庫連線也