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);}
你可以传递一个 list 实例或者 array 数组作为参数对象传给 MyBatis。
这之后,MyBatis 会自动将它包装在一个 Map 中,用名称作为键。
list 实例将会以 list 作为键,而 array 数组实例将会以 array 作为键
主要有 item,index,collection,open,separator,close
属性 | 说明 |
---|---|
item | 表示集合中每一个元素进行迭代时的别名 |
index | 指定一个名字,用于表示在迭代过程中,每次迭代到的位置 |
open | 表示该语句以什么开始 |
separator | 表示在每次进行迭代之间以什么符号作为分隔符 |
close | 表示以什么结束 |
在使用 foreach 时,最关键的也是最容易出错的就是 collection 属性,
该属性是必须指定的,但是在不同情况下,该属性的值是不一样的,主要有一下 3 种情况
如果传入的是单参数且参数类型是一个 List 时,collection 属性值为 list
如果传入的是单参数且参数类型是一个 array 数组时,collection 的属性值为 array
如果传入的参数是多个时,可以把它们封装成一个 Map,collection 的属性值为 Map 的键
如果传入的参数是多个时,也可以把它们封装成一个 Object
(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
mybatis中resultType可选类型:
当数据库返回的数据是null,那么使用resultType=“java.lang.Integer”
当数据库返回的数据是0,既可以使用resultType=“int” 也可以使用resultType=“java.lang.Integer”
看此处的代码