我把控制臺答應的sql復制到資料庫查詢是有資料的,但是mybatis的回傳結果數量是0條,請教一下可能是什么原因導致的?
uj5u.com熱心網友回復:
映射關系錯誤 表與屬性名uj5u.com熱心網友回復:
我是用的Map接收的資料
uj5u.com熱心網友回復:
例外和除錯log都沒 慢慢找吧uj5u.com熱心網友回復:


uj5u.com熱心網友回復:
沒有例外
uj5u.com熱心網友回復:
看一下你Mapper里面的方法uj5u.com熱心網友回復:
第一,先看看你的map中的useid,put進去的時候,是多少,是不是string型的?第二,再看看你的,as useid,查出來的useid是不是string型的,因為回傳的是string型。
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
我把where條件去掉的時候 就是有資料的 加了后面那個條件 并且引數也傳進去了 就查不到資料了
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
看看userId是不是為為慷訓者看看型別是不是Stringuj5u.com熱心網友回復:
不是這個問題 四樓有貼圖的
uj5u.com熱心網友回復:
List<Map<String, Object>> queryUserIdList(@Param(value="https://bbs.csdn.net/topics/userId") String userId);這樣試試!!uj5u.com熱心網友回復:
試試PARENT_ID=#{0}uj5u.com熱心網友回復:
跟之前一樣 引數其實都傳過去了 就是WHERE條件的問題 但不知道是什么問題
uj5u.com熱心網友回復:
還有這種操作 沒用過 試了下報錯了
uj5u.com熱心網友回復:
再把jdbcType=VARCHAR去掉試試.如果還是查不到資料,在控制臺看看你的sql,再看看你的引數.uj5u.com熱心網友回復:
這些都看過的 都是正常的 就是查不出資料 資料庫去查就有 找了半天了 一直沒找到原因
uj5u.com熱心網友回復:
加個qq:214440127uj5u.com熱心網友回復:
加了where就有錯?試試example拼接uj5u.com熱心網友回復:
#{ }是將傳入的值變成一個字串,你直接put(‘userid’,400311)么?還有就是你試沒試過,將sql陳述句寫死看能出來么,直接寫parent_id="400311";看有沒有值,或者是它決議‘’?‘’的時候出錯了。。
uj5u.com熱心網友回復:
沒有報錯 就是查詢不到資料 資料庫里查詢是有資料的
uj5u.com熱心網友回復:
寫死了試過,有資料。#{userId,jdbcType=VARCHAR}引數進去后 感覺跟引數丟失了一樣 查不到資料uj5u.com熱心網友回復:
where拼接引數失敗了或者引數型別不匹配 。所以沒用where就能查詢到所有uj5u.com熱心網友回復:
你把put進去的userId給它換個名字,把后面的jdbcType給去掉再試試,有可能它決議“?”,就是傳入引數是不是,決議有問題啊,變成另一個值了。有沒有決議之后的sql,uj5u.com熱心網友回復:
引數型別不匹配會在控制臺報出來的uj5u.com熱心網友回復:
去掉jdbcType, 加個if判斷下再拼接uj5u.com熱心網友回復:
試過 問題依舊沒查出來uj5u.com熱心網友回復:
已用過 也不行uj5u.com熱心網友回復:
用注解寫一個一樣的,或者用example寫一份sqluj5u.com熱心網友回復:
1.介面類加上@paramvalueuj5u.com熱心網友回復:
2.注意你的sql,列明重新起名了,把paramtype 引數去掉3.再不行,就寫個攔截器,看看sql以及回傳的結果就進是什么樣的
uj5u.com熱心網友回復:
把你整個專案發百度云然后貼出來吧uj5u.com熱心網友回復:
在資料庫組態檔jdbc.properties上添加url=jdbc:mysql://localhost:3306/elect?characterEncoding=utf-8防止亂碼問題
uj5u.com熱心網友回復:
把#換成$ 試一試 我也出現過。。。uj5u.com熱心網友回復:
不加WHERE有資料,加了沒有,說明:1、語法有問題;
2、傳的值有問題;
3、SQL有問題,根據傳的值沒有查到你想要的
uj5u.com熱心網友回復:
引數沒傳過來吧 String 引數 加 @PathVariable 這個注解了嗎uj5u.com熱心網友回復:
被這問題 搞死了 ,我的差不多,就是where checkseqno=#{CheckSeqNo} ,查不出資料,前面那個checkseqno換成其他的就能查出資料。uj5u.com熱心網友回復:
檢查下資料庫組態檔,看看是不是資料庫連接錯了uj5u.com熱心網友回復:
今天正好也遇到找個問題,拖到中午剛解決,我的問題是由于引數里邊有空白符或換行符照成的uj5u.com熱心網友回復:
回傳List就可以回傳List<Map>是什么鬼uj5u.com熱心網友回復:
查詢只需要寫<select id="findUsername" resultType="cn.zzq.bean.UserBean" parameterType這個寫了不行uj5u.com熱心網友回復:
我也出現這個問題,用的是mybatis 3.4.4,mybatis-spring 1.3.1,oracle11g2同樣是通過navicat for oracle執行控制臺輸出的sql陳述句有記錄,但是mybatis回傳0
uj5u.com熱心網友回復:
這里挖一下,剛遇到,前后能看到的地方都覺得是對的,改成死數值能查到結果,那肯定是引數問題,前后又看一遍,所有引數傳遞都是對的,最終查到源頭,引數的取值,從 (' ${di.dn_id} ')這里開始是為了美觀,因為寫下來的時候括號是歪的,我就以為可能前后要留個空讓括號自適應變成正常的樣子,結果改了后括號還是那樣子,我就沒管,保存了做其他了,現在回過頭再看,這邊取值的時候,取出的值前后都是有空格的,所以其實傳遞的引數一直是個錯誤的引數,但是從后臺system.out.print又能看到正確的引數列印,一直誤導著自己沒去看最開始的取值。好了我的解決程序就是這樣。不知道有沒有幫助。uj5u.com熱心網友回復:
試一下14樓的方法,如果是使用bean傳值的話,只要傳bean就行。使用引數的話,就需要14樓的方法,不然會報錯。還有就是你dao那邊引數的型別和mapper那邊的引數要一致。如下:/**
* 查詢所有班級資訊
*/
List<Map<String, Object>> findAllclass(@Param("begin")Integer begin,@Param("endss")Integer endss,@Param("name")String name);
<select id="findAllclass" resultType="map">
SELECT c.*,m.majors_name FROM classs c,majors m WHERE c.majors_id=m.id
<if test="name != null and name!= '' "> and class_name like CONCAT('%',#{name},'%')</if>
ORDER BY c.majors_id
LIMIT #{begin},#{endss}
</select>
uj5u.com熱心網友回復:
樓主你傳的引數有問題,你傳的是字串是有問題的,,你傳的是“400311”,但是應該是400311,因為后面的(String)會給你作轉換的uj5u.com熱心網友回復:
<resultMap id="BaseResultMap" type="com.yunchang.entity.Log"><id column="id" jdbcType="BIGINT" property="id" />
<result column="userid" jdbcType="INTEGER" property="userid" />
<result column="licenseid" jdbcType="INTEGER" property="licenseid" />
<result column="type" jdbcType="TINYINT" property="type" />
<result column="action" jdbcType="VARCHAR" property="action" />
<result column="datetime" jdbcType="TIMESTAMP" property="datetime" />
</resultMap>
<select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from log
where id = #{id,jdbcType=BIGINT}
</select>
你可以參考下這樣
uj5u.com熱心網友回復:



感覺被這問題折騰的。。。
你把xml檔案的 resultType="java.lang.Map" 改成 resultType="java.lang.Long" 就可以了吧?然后結果集用List<Long> 型別來接收
uj5u.com熱心網友回復:
我也遇到同查的問題,之前一直正常,突然不行了,最后發現還是引數問題,在傳參前用trim()方法去一下空格就可以了。uj5u.com熱心網友回復:
可以試著吧, #{} 引數寫成, ${} 這樣不會型別轉化uj5u.com熱心網友回復:
最后有結果么uj5u.com熱心網友回復:
你解決了嗎,我和你差不多
uj5u.com熱心網友回復:
這個是正解
uj5u.com熱心網友回復:
列名是不是也用變數系結的?比如 where ? = ?
如果是的話,列名用${xxx} 取值, 值用#{xxx}取值就行了
為了避免sql注入。列名的變數最好在后端定義,不要從前端接收變數
uj5u.com熱心網友回復:
看看查詢欄位的內容 有沒有空格uj5u.com熱心網友回復:
查看下資料庫的驅動,注意字符集轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/20902.html
標籤:Java EE
上一篇:Spring Boot 如何快速集成 Redis 哨兵?
下一篇:你可能不了解的java列舉
