【项目实战】MybatisPlus中使用<foreach>实现遍历查询与计算
创始人
2024-05-25 08:44:01
0

一、业务需求

MybatisMybatisPlus中需要编写相应SQL实现根据sku的ID遍历查询与计算相应中的库存列表数据,并且求得其中的最小值。

二、代码实现

int stock=welfareBlessingYxOrderService.getYXMoreSkuIdsStock(skuIds);
Integer getYXMoreSkuIdsStock(@Param("skuIdsList") List skuIdsList);
    @Overridepublic Integer getYXMoreSkuIdsStock(String skuIds) {String[] jsonSkuIdsArrays = skuIds.split(",");List skuIdsList = Arrays.asList(jsonSkuIdsArrays);return baseMapper.getYXMoreSkuIdsStock(skuIdsList);}

三、Mybatis知识点回顾

3.1 foreach 的语句逻辑

3.1.1 foreach 说明

你可以传递一个 list 实例或者 array 数组作为参数对象传给 MyBatis。
这之后,MyBatis 会自动将它包装在一个 Map 中,用名称作为键。
list 实例将会以 list 作为键,而 array 数组实例将会以 array 作为键

3.1.2 foreach 元素的属性

主要有 item,index,collection,open,separator,close

属性说明
item表示集合中每一个元素进行迭代时的别名
index指定一个名字,用于表示在迭代过程中,每次迭代到的位置
open表示该语句以什么开始
separator表示在每次进行迭代之间以什么符号作为分隔符
close表示以什么结束

3.1.3 foreach 使用注意实现

在使用 foreach 时,最关键的也是最容易出错的就是 collection 属性,
该属性是必须指定的,但是在不同情况下,该属性的值是不一样的,主要有一下 3 种情况

如果传入的是单参数且参数类型是一个 List 时,collection 属性值为 list
如果传入的是单参数且参数类型是一个 array 数组时,collection 的属性值为 array
如果传入的参数是多个时,可以把它们封装成一个 Map,collection 的属性值为 Map 的键
如果传入的参数是多个时,也可以把它们封装成一个 Object

3.2 # 与$的区别

(1)#
#相当于对数据 加上 双引号,预编译防sql注入,即对传入参数视为字符串
select * from user where name = #{name}
等价于select * from user where name = 'csdn'

(1)$

$相当于直接显示数据。

select * from user where name=${name}
等价于 select * from user where name=csdn

3.3 resultType中int 、Integer怎么选?

mybatis中resultType可选类型:

  • java的基础类型及其包装类int,double和java.lang.Integer,java.lang.Double等
  • 实体类,自己定义的实体类
  • map类型,如果使用resultMap这里可以使用自定义map
  • 集合,即返回的是一个List集合,其中该集合的类型可以为1,2,3中提到的类型

当数据库返回的数据是null,那么使用resultType=“java.lang.Integer”

当数据库返回的数据是0,既可以使用resultType=“int” 也可以使用resultType=“java.lang.Integer”

看此处的代码


相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
修复 爱普生 EPSON L4... L4151 L4153 L4156 L4158 L4163 L4165 L4166 L4168 L4...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...