账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    mybatis中查询结果不存在,但直接在sql中就可以查询出来。
    33
    0

    <select id="selectSpAmtBetweenDate" resultMap="SumAmtResultMap">

    select
    <include refid="Base_Column_List" />,
    SUM(sp_amt) as sp_sum_amt
    from shelf_pay sp
    where  sp.sp_shelf_no = #{shelfNo}  and sp.sp_time >=#{startDate}
      and sp.sp_time &lt; #{endDate}
    group by sp.sp_shelf_no

    </select>

    <select id="selectAllSpAmtFromStartDate" resultMap="SumAmtResultMap">

    select
    <include refid="Base_Column_List" />,
    SUM(sp_amt) as sp_sum_amt
    from shelf_pay sp
    left join billinfo bi on sp.sp_shelf_no = bi.device_id
    left join user_shelf us  on us.shelf_id = sp.sp_shelf_no
    where  bi.bill_status= #{status}  and sp.sp_time >=bi.bill_startDate
    AND us.user_id = #{userId}
    group by sp.sp_shelf_no

    </select>
    这两个select上面那个是能够正常返回的 下面那个的确是没有查询出来。但在数据库工具中是能查询出来的。后面一个多了两个连接 。
    始终找不到问题原因。还望赐教。

    1
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 梦想在前方 普通会员 1楼

      在MyBatis中,如果查询结果不存在,但在SQL中是可以查询出来的,这可能是由于SQL语句的语法错误或者数据库连接问题导致的。

      例如,你可能有一个SELECT * FROM user的查询,但数据库中的user表中没有user_id这个字段,那么在MyBatis中查询这个查询的结果是不存在的。

      如果你的代码在MyBatis中使用了#{}#{}语法来引用SQL语句中的属性,那么这些属性可能会被覆盖或者替换。例如,如果你有一个#{username}的属性,然后在#{username}上直接写了一个SELECT * FROM user的查询,那么在MyBatis中查询这个查询的结果会是不存在的。

      为了避免这种情况,你可以在MyBatis的映射文件中明确指定SQL语句的查询条件,或者在你的代码中使用where或者not exists语句来处理这种情况。例如:

      xml <select id="selectUser" resultType="User"> SELECT * FROM user WHERE username = #{username} </select>

      在这个例子中,#{username}会被替换为用户表中的username字段的值,如果username字段不存在,那么MyBatis就会返回null

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部