赞
踩
目录
(4).传入多个list或者array,不使用实体进行封装。
mapper接口
- /**
- * @param bmsBillMemoList
- * @return
- */
- public int insertBatchMemo(List<BmsBillMemo> bmsBillMemoList);
映射文件
- <insert id="insertBatchMemo">
- insert into bms_bills_memo(
- supplier_id,
- supplier_name,
- client_id,
- client_name,
- client_short_name,
- currency,
- exchange_rate,
- consignment_id,
- bill_of_lading_no,
- expense_id,
- expense_name,
- unit_price_contain_tax,
- unit_price,
- amounts,
- tax_rate,
- tax,
- total_contain_rate,
- total,
- contains_count,
- is_locked,
- belonging_to_date,
- memo_type,
- charge_desc,
- payment_type,
- create_by,
- create_time)
- values
- <foreach collection="list" item="detail" separator=",">
- ( #{detail.supplierId},#{detail.supplierName}, #{detail.clientId},
- #{detail.clientName},#{detail.clientShortName},#{detail.currency},
- #{detail.exchangeRate},#{detail.consignmentId},#{detail.billOfLadingNo},
- #{detail.expenseId},#{detail.expenseName},#{detail.unitPriceContainTax},
- #{detail.unitPrice},#{detail.amounts},#{detail.taxRate},
- #{detail.tax},#{detail.totalContainRate},#{detail.total},
- #{detail.containsCount},#{detail.isLocked},#{detail.belongingToDate},
- #{detail.memoType},#{detail.chargeDesc},#{detail.paymentType},
- #{detail.createBy},#{detail.createTime}
- )
- </foreach>
- </insert>
入参只有一个且是list类型,collection设置为list。
mapper接口
- /**
- * 批量删除结算账单手账
- *
- * @param ids 需要删除的数据主键集合
- * @return 结果
- */
- public int deleteBmsBillMemoByIds(Long[] ids);
映射文件
-
- <delete id="deleteBmsBillMemoByIds" >
- delete from bms_bills_memo where id in
- <foreach item="id" collection="array" open="(" separator="," close=")">
- #{id}
- </foreach>
- </delete>
入参只有一个且是数组的场合,collection设置为array。
入参的实体类
- package com.example.demo.domain;
-
- import lombok.Data;
-
- import java.util.List;
-
- /**
- * @author linaibo
- * @version 1.0
- * Create by 2022/12/20 15:07
- */
- @Data
- public class selectVo {
-
- private Long id;
-
- private Long supplierId;
-
- private Long[] ids;
-
- private List<Long> clientIdList;
-
- }
mapper接口
public List<BmsBillMemo> listMemo(selectVo select);
映射文件
- <select id="listMemo" resultType="com.example.demo.domain.BmsBillMemo">
- select *
- from bms_bills_memo
- <where>
- and id in
- <foreach collection="ids" open="(" close=")" item="detail" separator=",">
- #{detail}
- </foreach>
- and
- client_id in
- <foreach collection="clientIdList" separator="," item="detail" open="(" close=")" >
- #{detail}
- </foreach>
- </where>
- </select>
传入的参数是实体类,并且实体中包含数组和集合,使用list的场合,collection的内容是是list的id,即clientIdList,使用array的场合,collection的内容是是array的id,即ids
mapper接口
public List<BmsBillMemo> listMemo1(@Param("idArray") Long[] array, @Param("clientIdList") List<Long> list);
映射文件
- <select id="listMemo1" resultType="com.example.demo.domain.BmsBillMemo">
- select *
- from bms_bills_memo
- <where>
- and id in
- <foreach collection="idArray" open="(" close=")" item="detail" separator=",">
- #{detail}
- </foreach>
- and
- client_id in
- <foreach collection="clientIdList" separator="," item="detail" open="(" close=")" >
- #{detail}
- </foreach>
- </where>
- </select>
collection需要使用到Param中定义的别名。
以上几种比较常见,如果在mapper接口中添加@Param注解的场合,list,array将会失效,collection的内容需要使用Param中的别名来指定你需要用到的list或者array,这个需要注意,一般在只有一个参数的场合,没有必要使用Param注解。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。