返回顶部
首页 > 资讯 > 精选 >mybatis使用foreach查询不出结果也不报错的问题怎么解决
  • 778
分享到

mybatis使用foreach查询不出结果也不报错的问题怎么解决

2023-06-29 15:06:23 778人浏览 薄情痞子
摘要

本篇内容介绍了“mybatis使用foreach查询不出结果也不报错的问题怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!foreac

本篇内容介绍了“mybatis使用foreach查询不出结果也不报错的问题怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

foreach查询不出结果也不报错问题

首先,执行的时候语法没有报错,其次sql语句拿到数据库去执行能查到数据,但是在接口这边返回空输数据,查看控制台发现sql语句执行了,但是返回结果为0。此时猜想是传入参数的问题。

执行结果

此时数组是直接从参数里接收

mybatis使用foreach查询不出结果也不报错的问题怎么解决

仔细看此时的数组和普通的数组还是有差别的

mybatis使用foreach查询不出结果也不报错的问题怎么解决

但是此时执行是没有问题的,但是查不到数据

mybatis使用foreach查询不出结果也不报错的问题怎么解决

正确执行结果

mybatis使用foreach查询不出结果也不报错的问题怎么解决

此时的数组

mybatis使用foreach查询不出结果也不报错的问题怎么解决

遍历输出

mybatis使用foreach查询不出结果也不报错的问题怎么解决

所以,由此可以看出是参数的问题

正确做法

由于接收到的数组是JSON数组,不能直接使用,要转成普通数组即可

mybatis使用foreach查询不出结果也不报错的问题怎么解决

前端传入参数(数组即可)

mybatis使用foreach查询不出结果也不报错的问题怎么解决

使用foreach、in操作注意点

mybatis语法掌握不熟,在写foreach操作时,造成in ()错误,这种情况不符合SQL的语法,导致程序报错。

如果简单只做非空判断,这样也有可能会有问题:本来in一个空列表,应该是没有数据才对,却变成了获取全部数据!

错误sql示例

<select id="getActiveCount" resultType="int" parameterType="com.missfresh.active.dto.ActiveSearchDTO">        select count(1) from (        SELECT        distinct  a.*        FROM        active AS a        <if test="sku!='' and sku!=null">            LEFT JOIN active_promotion AS ap ON ap.active_id = a.id            LEFT JOIN promotion_product AS pp ON pp.promotion_id = ap.promotion_id        </if>        <if test="areaids!='' and areaIds!=null">            LEFT JOIN active_area AS aa ON aa.active_id = a.id and aa.status = 1 and aa.area_type = 0        </if>        WHERE a.status <![CDATA[!= ]]> 0        <if test="id!=0 and id!=null">            AND a.id = #{id}        </if>        <if test="name!='' and name!=null">            AND a.name LIKE CONCAT('%',#{name},'%')        </if>        <if test="sku!='' and sku!=null">            AND pp.sku = #{sku}        </if>        <!--判断方式错了,应该先用null再用size>0判断;如果areaIds为空,查询结果也应为空,而不是其他查询结果。所以sql有问题-->        <if test="areaIds!='' and areaIds!=null">            and aa.area_id IN            <foreach item="item" index="index" collection="areaIds" open="(" separator="," close=")">                #{item}            </foreach>        </if>        order by a.create_time desc ) as b    </select>

改正后的sql为

<select id="getActiveCount" resultType="int" parameterType="com.missfresh.active.dto.ActiveSearchDTO">        select count(1) from (        SELECT        distinct  a.*        FROM        active AS a        <if test="sku!='' and sku!=null">            LEFT JOIN active_promotion AS ap ON ap.active_id = a.id            LEFT JOIN promotion_product AS pp ON pp.promotion_id = ap.promotion_id        </if>        <if test="areaIds!='' and areaIds!=null">            LEFT JOIN active_area AS aa ON aa.active_id = a.id and aa.status = 1 and aa.area_type = 0        </if>        WHERE a.status <![CDATA[!= ]]> 0        <if test="id!=0 and id!=null">            AND a.id = #{id}        </if>        <if test="name!='' and name!=null">            AND a.name LIKE CONCAT('%',#{name},'%')        </if>        <if test="sku!='' and sku!=null">            AND pp.sku = #{sku}        </if>        <if test="areaIds!=null and areaIds.size > 0">            and aa.area_id IN            <foreach item="item" index="index" collection="areaIds" open="(" separator="," close=")">                #{item}            </foreach>        </if>        <!--加入这个非真条件-->        <if test="areaIds==null or areaIds.size ==  0">        and 1=0        </if>        order by a.create_time desc ) as b    </select>

“mybatis使用foreach查询不出结果也不报错的问题怎么解决”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: mybatis使用foreach查询不出结果也不报错的问题怎么解决

本文链接: https://lsjlt.com/news/325440.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • mybatis使用foreach查询不出结果也不报错的问题怎么解决
    本篇内容介绍了“mybatis使用foreach查询不出结果也不报错的问题怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!foreac...
    99+
    2023-06-29
  • mybatis使用foreach查询不出结果也不报错的问题
    目录foreach查询不出结果也不报错问题执行结果正确执行结果正确做法使用foreach、in操作注意点错误sql示例改正后的sql为foreach查询不出结果也不报错问题 首先,执...
    99+
    2024-04-02
  • mybatis相同的sql查询第二次查不出结果问题
    目录相同的sql查询第二次查不出结果问题问题分析问题探索MyBatis缓存介绍问题原因解决方案mybatis条件查询容易遇见的错误一不小心就容易出现这个错误两种解决方法相同的sql查...
    99+
    2024-04-02
  • mybatis使用Integer类型查询出现的问题怎么解决
    本文小编为大家详细介绍“mybatis使用Integer类型查询出现的问题怎么解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“mybatis使用Integer类型查询出现的问题怎么解决”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入...
    99+
    2023-06-29
  • mybatis相同的sql查询第二次查不出结果怎么办
    这篇文章主要讲解了“mybatis相同的sql查询第二次查不出结果怎么办”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mybatis相同的sql查询第二次查不出结果怎么办”吧!相同的sql查...
    99+
    2023-06-28
  • plsql查询结果不显示怎么解决
    在PL/SQL中,如果查询结果没有显示,可能是因为以下几个原因: 数据库连接问题:确保你已成功连接到数据库,并且有权限执行查询操...
    99+
    2024-04-09
    plsql
  • Mybatis-plus的selectPage()分页查询不生效问题解决
    目录背景:问题原因:问题定位过程:那么什么原因的背景: 项目需要从mybits切换到mubits-plus,但是我在进行分页查询的时候,发现一直不生效 问题原因: 添加监听器,配置如...
    99+
    2023-01-09
    Mybatis-plus selectPage()分页 Mybatis-plus selectPage()
  • 如何解决查询结果集很小但Created_tmp_disk_tables不断增加的问题
    这期内容当中小编将会给大家带来有关如何解决查询结果集很小但Created_tmp_disk_tables不断增加的问题,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。cre...
    99+
    2024-04-02
  • django orm中如何解决查询结果不区分大小写问题
    小编给大家分享一下django orm中如何解决查询结果不区分大小写问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1.1.1...
    99+
    2024-04-02
  • 怎么解决php数据库查询结果编码的问题
    这篇“怎么解决php数据库查询结果编码的问题”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么解决php数据库查询结果编码的...
    99+
    2023-07-05
  • delete in子查询不走索引问题怎么解决
    本文小编为大家详细介绍“delete in子查询不走索引问题怎么解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“delete in子查询不走索引问题怎么解决”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深...
    99+
    2023-07-02
  • java不是内部或外部命令,也不是可运行程序的报错问题怎么解决
    本篇内容主要讲解“java不是内部或外部命令,也不是可运行程序的报错问题怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“java不是内部或外部命令,也不是可运行程序的报错问题怎么解决”吧!...
    99+
    2023-06-30
  • mybatis一对一查询一对多查询遇到的问题怎么解决
    这篇文章主要介绍“mybatis一对一查询一对多查询遇到的问题怎么解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“mybatis一对一查询一对多查询遇到的问题怎么解决”文章能帮助大家解决问题。实体...
    99+
    2023-06-30
  • Mybatis对sql表的一对多查询问题怎么解决
    这篇“Mybatis对sql表的一对多查询问题怎么解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Mybatis对sql表...
    99+
    2023-07-02
  • 解决php和crypto.js使用md5加密结果不一致问题
    前言 在做 前后端验签时,使用到了md5加密,发现前后端加密结果不统一,导致验签失败。这里总结一下问题原因以及解决方法,以供参考。前端使用到了CryptoJS前端加密库进行加密。 问题复现 为了测试方便,字段remark中使用了很多特殊字...
    99+
    2023-08-31
    CryptoJS php 加密 js md5
  • 解决javac不是内部或外部命令,也不是可运行程序的报错问题
    目录简述下面就讲讲解决方法解决过程可能还有的问题解决之后的效果简述 在学着使用Java的命令行来编译java文件的时候,遇到了这个问题 Windows操作系统报错 “&l...
    99+
    2024-04-02
  • mysql中delete in子查询不走索引问题怎么解决
    本文小编为大家详细介绍“mysql中delete in子查询不走索引问题怎么解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“mysql中delete in子查询不走索引问题...
    99+
    2024-04-02
  • php控制器找不到报错问题怎么解决
    这篇文章主要介绍“php控制器找不到报错问题怎么解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“php控制器找不到报错问题怎么解决”文章能帮助大家解决问题。php控制器找不到的解决办法:1、检查原...
    99+
    2023-07-04
  • PhpMyAdmin不能导出数据的问题怎么解决
    这篇文章主要介绍“PhpMyAdmin不能导出数据的问题怎么解决”,在日常操作中,相信很多人在PhpMyAdmin不能导出数据的问题怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望...
    99+
    2024-04-02
  • Mybatis-plus使用selectList查询数据为null的问题及解决办法
    目录概述原因解决方案概述 使用mybatis-plus的selectList查询数据封装进list 打印为null javaben和数据库字段也能对应上 原因 可以从图片看的出...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作