我把控制台答应的sql复制到数据库查询是有数据的,但是mybatis的返回结果数量是0条,请教一下可能是什么原因导致的?

解决方案 »

  1.   


    我是用的Map接收的数据
      

  2.   

    异常和调试log都没 慢慢找吧
      

  3.   

    看一下你Mapper里面的方法
      

  4.   

    第一,先看看你的map中的useid,put进去的时候,是多少,是不是string型的?
    第二,再看看你的,as useid,查出来的useid是不是string型的,因为返回的是string型。
      

  5.   


    我把where条件去掉的时候  就是有数据的  加了后面那个条件  并且参数也传进去了   就查不到数据了
      

  6.   

    看看userId是不是为为空或者看看类型是不是String
      

  7.   

     List<Map<String, Object>> queryUserIdList(@Param(value="userId") String userId);这样试试!!
      

  8.   

    试试PARENT_ID=#{0}
      

  9.   

     跟之前一样   参数其实都传过去了   就是WHERE条件的问题  但不知道是什么问题
      

  10.   

    再把jdbcType=VARCHAR去掉试试.如果还是查不到数据,在控制台看看你的sql,再看看你的参数.
      

  11.   

    加了where就有错?试试example拼接 
      

  12.   

    #{ }是将传入的值变成一个字符串,你直接put(‘userid’,400311)么?
    还有就是你试没试过,将sql语句写死看能出来么,直接写parent_id="400311";看有没有值,或者是它解析‘’?‘’的时候出错了。。
      

  13.   

    写死了试过,有数据。#{userId,jdbcType=VARCHAR}参数进去后  感觉跟参数丢失了一样  查不到数据
      

  14.   

    where拼接参数失败了或者参数类型不匹配 。所以没用where就能查询到所有
      

  15.   

    你把put进去的userId给它换个名字,把后面的jdbcType给去掉再试试,有可能它解析“?”,就是传入参数是不是,解析有问题啊,变成另一个值了。有没有解析之后的sql,
      

  16.   

    去掉jdbcType, 加个if判断下再拼接
      

  17.   

    用注解写一个一样的,或者用example写一份sql
      

  18.   

    1.接口类加上@paramvalue
      

  19.   

    2.注意你的sql,列明重新起名了,把paramtype 参数去掉
    3.再不行,就写个拦截器,看看sql以及返回的结果就进是什么样的
      

  20.   

    在数据库配置文件jdbc.properties上添加url=jdbc:mysql://localhost:3306/elect?characterEncoding=utf-8
    防止乱码问题
      

  21.   

    不加WHERE有数据,加了没有,说明:
    1、语法有问题;
    2、传的值有问题;
    3、SQL有问题,根据传的值没有查到你想要的
      

  22.   

    参数没传过来吧 String 参数 加 @PathVariable 这个注解了吗
      

  23.   

    被这问题 搞死了 ,我的差不多,就是where  checkseqno=#{CheckSeqNo}    ,查不出数据,前面那个checkseqno换成其他的就能查出数据。
      

  24.   

    返回List就可以返回List<Map>是什么鬼
      

  25.   

    查詢只需要寫<select id="findUsername" resultType="cn.zzq.bean.UserBean"  parameterType這個寫了不行
      

  26.   

    我也出现这个问题,用的是mybatis 3.4.4,mybatis-spring 1.3.1,oracle11g2同样是通过navicat for oracle执行控制台输出的sql语句有记录,但是mybatis返回0
      

  27.   

    这里挖一下,刚遇到,前后能看到的地方都觉得是对的,改成死数值能查到结果,那肯定是参数问题,前后又看一遍,所有参数传递都是对的,最终查到源头,参数的取值,从 (' ${di.dn_id} ')这里开始是为了美观,因为写下来的时候括号是歪的,我就以为可能前后要留个空让括号自适应变成正常的样子,结果改了后括号还是那样子,我就没管,保存了做其他了,现在回过头再看,这边取值的时候,取出的值前后都是有空格的,所以其实传递的参数一直是个错误的参数,但是从后台system.out.print又能看到正确的参数打印,一直误导着自己没去看最开始的取值。好了我的解决过程就是这样。不知道有没有帮助。
      

  28.   

    试一下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>
      

  29.   

    楼主你传的参数有问题,你传的是字符串是有问题的,,你传的是“400311”,但是应该是400311,因为后面的(String)会给你作转换的
      

  30.   

    <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>
    你可以参考下这样
      

  31.   


    感觉被这问题折腾的
    你把xml文件的 resultType="java.lang.Map" 改成 resultType="java.lang.Long"  就可以了吧?然后结果集用List<Long> 类型来接收
      

  32.   

    我也遇到同查的问题,之前一直正常,突然不行了,最后发现还是参数问题,在传参前用trim()方法去一下空格就可以了。