Mybatis 参数List是否包含某个值

Mybatis 查询一个对象包含多个子对象 (List 包含 List) Mybatis 查询一个对象包含多个子对象 (List 包含 List) 功能:查询一个数据列表 且每个数据中包含各自的子数据集合 使用场景:1. 当需要查询多订单数据且同时订单数据中需要包含订单明细数据时 2. 当需要查询多评论数据且同时评论数据中需要包含评论回复数据时 功能效果概述图: 1. Dao层定义 package com.ljw.dao; import java.util.List; import com.ljw.vo.Order; ... 阅读详情

前言

 mybatis 是国内主流的数据访问层映射框架,但有时过滤条件的判断让人头大,今天就来研究一下传参对象里包含list<T>,且 list 的值与库里无映射

需求样例

  List<T>    [0,1,2,3] ----->[null,1,2,3]
  当含有List含有0,in(0)必定查不出来 ,库里映射null
  总之字段需要转化怎么处理?
  修改库成本太大!

解决方案

 方案一: 利用list.contains() 函数 泛型一致,不然判断不生效
 <if test="paramInfo.markIds != null and paramInfo.markIds.size > 0">
     <choose>
        <when test="paramInfo.markIds.contains(0L)">
          and (mark_id is null or mark_id in
            <foreach collection="paramInfo.markIds" item="markId"  open="(" separator="," close=")">
                #{markId }
            </foreach>
          )
        </when>
         <otherwise>
             and mark_id in
             <foreach collection="paramInfo.markIds" item="markId"  open="(" separator="," close=")">
                 #{markId}
             </foreach>
         </otherwise>
     </choose>

 </if>

方案二:
   对象加额外字段markZero
   利用用Java代码处理,当包含值时存入该字段
   对于sql语句做双重判断
<if test="paramInfo.markIds != null and paramInfo.markIds.size > 0">
     <choose>
        <when test="paramInfo.markZero==0">
          and (mark_id is null or mark_id in
            <foreach collection="paramInfo.markIds" item="markId"  open="(" separator="," close=")">
                #{markId }
            </foreach>
          )
        </when>
         <otherwise>
             and mark_id in
             <foreach collection="paramInfo.markIds" item="markId"  open="(" separator="," close=")">
                 #{markId}
             </foreach>
         </otherwise>
     </choose>

 </if>
   
手把手教你学 AI芯片 SOC软件开发专栏简介 在AI芯片(如NPU、GPU加速器)爆发式增长的今天,软件栈开发已成为AI应用落地的核心瓶颈。无论是模型推理加速、低延迟部署,还是能效优化,都依赖于对芯片底层软件的深度掌握。然而,许多开发者困于“只会调用API,不懂驱动实现”的困境,导致性能瓶颈难以突破。本专栏《手把手教你学 AI芯片 SOC软件开发》专为AI工程师、嵌入式开发者及系统架构师打造,从零基础切入,系统拆解AI芯片SOC(System on Chip)的完整软件栈,覆盖Runtime(运行时) 阅读详情

相关推荐

微机原理--输入输出实验--emu8086

通过实验,验证了基本要求,实现了一位数加法运算的功能,同时实现了两位数加法运算的功能,还有一位数的除法。思考题(1)输入输出数据和计算用数据的区别:从键盘上输入以及输出的数据要在通过转化为计算机所识别的二进制的数字,和计算所用的数据之间相差30H。(2)单字符输入输出和串输入输出的不同之处:单字符的输入使用1号功能键,输出通过2号功能调用,且待显示字符送给DL寄存器;串输入使用0A功能,输出通过9号功能调用,DS:DX指向待显示字符串,且字符串必须以“$”结束。

m0_58837398的博客 2419

mybatis判断list集合是否包含指定数据

需求 在mybatis脚本中想要判断list中是否含有某个字符串。 准备 之前脚本中用的最多的list函数就是size和遍历了。那么mybatis脚本中是不是又包含函数了。首先我们要清楚list的类型。写个简单的测试用例。 <select id="test" parameterType="java.util.Map" resultType="java.util.Map"> ...

yyoc97的专栏 2万+

R语言实战:从Raw Counts到TPM/FPKM的完整转换指南(含代码调试技巧)

本文详细介绍了在R语言环境中将RNA-seq原始计数(raw counts)转换为TPM/FPKM值的完整流程,包含代码实现和常见错误调试技巧。通过具体案例演示如何正确处理基因长度和测序深度因素,实现表达量标准化,为生物信息学分析提供可靠数据基础。特别适合需要进行转录组数据分析的研究人员和实验室技术人员参考。

weixin_28559803的博客 481

MyBatis动态SQL判断集合包含指定元素

在使用MyBatis动态SQL查询时,有时候需要判断集合中是否有某个元素,若存在则动态添加指定sql语句,不存在,则不进行任何操作。

抓娃攻城师 5603

数字取证双雄:Passware Kit Forensic 与 ElcomSoft 在实战场景下的能力边界解析

本文深入解析了Passware Kit Forensic与ElcomSoft在数字取证实战中的能力边界,涵盖Windows、macOS、iOS和Android系统的密码恢复与数据提取技术。通过真实案例对比两款工具在硬件加速、分布式计算及云取证等场景下的表现差异,为取证专家提供关键决策参考。特别探讨了密码恢复软件在加密设备突破中的核心作用。

weixin_30342209的博客 401

CocosCreator视频播放黑屏?手把手教你封装VideoPlayer组件解决Web环境问题

本文针对Cocos Creator在Web环境下视频播放黑屏等常见问题,提供了一套工程化的VideoPlayer组件封装解决方案。文章深入剖析了浏览器自动播放策略、DOM样式隔离等核心挑战,并手把手教你实现一个健壮的管理器,涵盖兼容性处理、性能优化与内存管理,确保视频播放稳定流畅。

plum99的博客 600

Mybatis 查询包含包含集合List的方法

最近项目里有个小功能,多表联合查询的时候,有个表里的数据是集合返回的,考虑原本的sql不带集合形式,如果遍历再去表里查询,耗时费力,作为追求完美的程序员,是绝对不允许这样的。所以原本的sql语句需要修改,考虑使用collection。 简述下功能: 主要有三个表,团队表,团队成员表,作品表(demo中的其他表与本次collection使用无关)。 这是返回主体的DO public class TeamInfoDO implements Serializable { private static fi

csdn_jeffrey_tang的博客 3288

跟踪雷达点迹处理

1,点迹定义: 假设研究对象为位置x和速度v,预测值是根据这一时刻的x值、v值来预测下一时刻的x、v;测量值是根据传感器也就是雷达得到的,因为各种误差的存在,这两个值都不准确,所以把他们加权融合,得到一个新的量—状态值。 点迹就是所谓的测量值,由雷达对同一个目标探测到的一系列点(假设目标静止,但由于误差的存在,会扫描出不止一个点),航迹对应状态值,是点迹和预测轨迹的加权融合。 2,雷达信号和点迹处理关系: 3,点迹航迹处理流程 4,仿真 clear all; RealData=G

wangjie36的博客 1万+

Mybatis 查询条件包含List的情况

在mybatis中进行搜索时,有时候参数中包含了List,比如传入参数: public class FileRequest{ //文件类型 private Integer fileType; //状态 private List<Status> statusList; } public class Status{ //注册...

gaozhonghua12的专栏 2118

V4L2教程(1):Ubuntu V4L2开发环境搭建与设备探索

欢迎来到V4L2学习指南的第一篇!本文将带你从零开始,在Ubuntu系统上搭建完整的V4L2视频采集开发环境。无论你是想开发视频监控、视频会议还是机器视觉应用,掌握V4L2都是Linux视频开发的必经之路。 **本节学习目标**: - 理解V4L2的基本概念和架构 - 搭建Ubuntu下的V4L2开发环境 - 掌握v4l2-ctl等调试工具的使用 - 学会检测和配置USB摄像头设备

琅嬛福地 417

100天精通Python(可视化篇)——第98天:Pyecharts绘制多种炫酷日历图参数说明+代码实战

一、日历图介绍 二、基础配置 1. 配置项类 2. 添加函数 3. 日期标签配置 4. 坐标系配置 三、日历图实战 1. 基础日历图 2. 日历热图

努力让自己发光,对的人才能迎着光而来 2万+

Mybatis参数为对象中包含list情况处理

mybatis是一个非常好用且灵活的持久层框架,但也正是因为太过灵活,导致有时候参数很难整理。我把我在项目中遇到的一个特殊情况列出来,希望下次再碰到时,也有个印象。 实体类如下: package com.kxlive.erp.sc.stock.vo; import java.util.Date; import java.util.List; import org.springframewo

游民十三少的博客 2万+

《二、企业级监控系统之Prometheus监控node_exporter》

文章目录一、部署node_exporter服务二、部署prometheus服务2.1、部署node_exporter服务三、grafana之添加数据源四、grafana之导入监控模板五、grafana之修改模板变量六、grafana之修改仪表板变量总结 > 这里是引用 一、部署node_exporter服务 docker run -d --restart=always --name node_exporter --net=“host” --pid=“host” -v “/:/host:ro,

东城绝神 1万+

Mybatis处理List参数

前言: 本篇博客仅仅作为笔录,避免每次网络搜索 前期准备: sql : CREATE TABLE `tb_student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) COLLATE utf8_bin NOT NULL, `age` int(11) NOT NULL, PRIMARY KEY (`id`...

张井天的博客 2万+

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

MyBatis传入参数为数组、list的写法

1.主要用到了一个foreach标签实现sql条件的循环,完成类似批量的sql。 foreach是对一个集合进行遍历,通常是在构建 IN 条件语句的时候。 foreach元素的属性主要有 item,index,collection,open,separator,close。 item:表示集合中每一个元素进行迭代时的别名 index:用于表示在迭代过程中,每次迭代到的位置 collection:指...

博客园 1万+

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

mybatis参数map包含list,取数时遍历list

mybatis xml文件: &lt;update id="chooseconfirm" parameterType="java.util.Map"&gt; UPDATE BarcodeScan SET confirmuser=#{account},confirmdate=NOW() WHERE ID in &lt;foreach collection="IDlist" index="in...

隔山看海 3997

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Mybatis 传递参数类型为List的取值问题

Mybatis 传递参数类型为List的取值问题 问题描述: 参数传递为List时: 当传递一个 List 实例或者数组作为参数对象传给 Mybatis。此时,Mybatis 会自动将它包装在一个 Map 中,用名称在作为键。List 实例将会以“list” 作为键,而数组实例将会以“array”作为键。所以,当我们传递的是一个List集合时,mybatis会自动把我们的list集合包装成以lis...

plq520的博客 11万+

Mybatis 传递参数类型为List集合或Map的取值问题

传递List: 当传递一个 List 实例或者数组作为参数对象传给 Mybatis。此时,Mybatis 会自动将它包装在一个 Map 中,用名称在作为键。List 实例将会以“list” 作为键,而数组实例将会以“array”作为键。所以,当我们传递的是一个List集合时,mybatis会自动把我们的list集合包装成以list为Key值的map。 DAO 层: Long select...

博览群书 7807

Mybatis in查询List或数组 场景实例

本文介绍了MyBatis中处理IN查询的两种参数类型方法:1)对于List类型,需判断非空后使用foreach标签构建IN条件,空集合时可添加无效值"-1"保证查询;2)对于数组类型,同样需要判断长度后处理,空数组时也可设置无效值。文中提供了完整的代码示例,包括Java业务层参数处理和MyBatis XML映射文件中的SQL写法,特别强调了判断集合/数组非空时的正确语法(size()>0/length>0)。

ywl470812087的博客 13万+

mybatis怎样判断list是否为空

一、参数list时,先判断是否为空,否则会报错。 二、mybatis ${}与#{}的区别 简单来说#{} 解析的是占位符?可以防止SQL注入, 比如打印出来的语句 select * from table where id=?然而则是不能防止SQL注入打印出来的语句select∗ fromtablewhereid=2实实在在的参数。最简单的区别就是{} 则是不能防止SQL注入打印出来的语句 se...

dxyzhbb的博客 6万+

mabatis 多参数包含list时,使用foreach的用法

mabatis 多参数包含list时,使用foreach的用法 (1)单个参数为list 注意:使用@param注解时,mapper指定了参数名,xml中需要严格匹配 dao部分的mapper public void getTags(@Param("tagIdList")List&lt;Integer&gt; tagIdList); xml部分: &lt;select id="getTags"&g...

jacklife的博客 3322

get传参list_MyBatis传入多个参数 ,List集合

一.单个参数:public List getXXBeanList(String xxCode);select t.* from tableName t where t.id= #{id}其中方法名和ID一致,#{}中的参数名与方法中的参数名一直, 我这里采用的是XXXBean是采用的短名字,select 后的字段列表要和bean中的属性名一致, 如果不一致的可以用 as 来补充。二、多参数:pub...

weixin_35110559的博客 1363

mybatis传入map参数,map中包含list(输入参数)

1.xml中配置: <!-- 根据条件查询满足条件的ID集合开始 --> <select id="getQuestionsIdsForExamPaper" resultType="java.lang.String" parameterType="hashmap"> select questionId from ...

bingguang1993的博客 3985

MyBatis传入参数为list、数组、map写法

1.foreach简单介绍: foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合。 foreach元素的属性主要有item,index,collection,open,separator,close。 item表示集合中每一个元素进行迭代时的别名, index指定一个名字,用于表示在迭代过程中,每次迭代到的位置, open表示该语句以什么开始, separat

干货小抽屉 5003

MyBatis传入参数为List对象

MyBatis传入参数为List对象 SSM框架是JavaWeb必学的框架,虽说基本的增删改查很简单,但是当面临一些特殊情况时,有时还是会显得手足无措,此篇用来记录一些特殊场景下Mybatis框架的应用. 传入参数为List对象# 1. 场景复现# 首先有如下一张表: CopyMySQL [test]> s...

weixin_40705360的博客 2514

MyBatis传入多个参数的问题

一、单个参数: public List<XXBean> getXXBeanList(String xxCode); <select id="getXXXBeanList" parameterType="java.lang.String" resultType="XXBean">   select t.* from tableName t where t.id...

<'_'>的博客 9719
上一篇: idea 代码定位
下一篇: logback日志
WindwardBird
博客等级 码龄7年 19粉丝 94原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值