1.1 基本介绍

Mybatis-plugs 批量新增及批量修改、IN、CASE WHEN 查询,简单,适用,最近用到了,那就留下点痕迹,免得下次用到再去找
<foreach> 标签里面的各个属性怎么配置!

1.2 代码

实体:

@Data
@TableName("device")
public class Device implements Serializable {private static final long serialVersionUID = 1L;/**id*/private String id;/**设备类型id*/private Integer typeId;/**S/N 码*/private String sn;/**使用方式,1:售卖,2:租赁 (小程序绑定时修改)*/private Integer useMode;/**库存状态(1:已出库,2:已入库,3:待入库)*/private Integer stockStatus;/**设备状态(1:未绑定,2:已绑定,3:已损坏)*/private Integer deviceStatus;/**门店id (store.id)*/private String storeId;/**商户id (merchant_cs.id)*/private String merchantId;/**是否删除(1:是/true,0:否/false)*/private Boolean deleted;/**备注*/private String remark;/**创建时间*/private Date createTime;/**更新时间*/private Date updateTime;}

Mapper:

@Mapper
public interface DeviceMapper extends BaseMapper<Device> {/*** 根据sn码批量查询id* @param sns* @return*/List<String> findIds(@Param("sns") List<String> sns);/*** 根据id查询详细* @param id* @return*/Map<String, Object> findDetail(@Param("id") String id);/***  修改设备相关状态* @param list* @return*/void batchUpdateWarehouse(@Param("list") List<Device> list);/***  设备扫码批量入库* @param list*/void batchPortalInputWarehouse(@Param("list") List<Device> list);}

xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.lq.cloud.mapper.agent.DeviceMapper"><sql id="batchInsertDevice">id, stock_status, device_status, sn, type_id, deleted, create_time, update_time</sql><!-- 根据sn码批量查询id --><select id="findIds" parameterType="java.util.List" resultType="java.lang.String">select id from device<where><if test="sns != null and sns.size() > 0 ">sn IN<foreach collection="sns" item="id" index="index" open="(" close=")" separator=",">#{id}</foreach></if></where></select><!-- 根据id查询详细 --><select id="findDetail" resultType="java.util.Map">SELECTd.id,dt.`name`,d.sn,dt.picture_url pictureUrl,cr.current_position currentPosition,cr.device_status deviceStatus,CASEWHEN d.use_mode = 1 THEN '售卖'WHEN d.use_mode = 2 THEN '租赁'ELSE ''END useModeFROMdevice dLEFT JOIN device_circulation_record cr ON d.id = cr.device_idAND cr.create_time = (SELECTmax( create_time )FROMdevice_circulation_record)LEFT JOIN device_type dt ON dt.id = d.type_idwhere d.id = #{id}</select><!-- 城市服务商修改设备相关状态,并保存流转记录 --><!-- collection="list"   collection 属性的值是 Mapper interface 里定义的形参 --><!-- #{item.id}  item 是 <foreach> 标签里 item 属性 的值,通过 对象.属性 来获取传入的各个参数 --><!-- 下同 --><update id="batchUpdateWarehouse"  parameterType="java.util.List"><foreach collection="list" item="item" index="index" open="" close="" separator=";">update device<set><if test="item.stockStatus != null">stock_status = #{item.stockStatus},</if><if test="item.deviceStatus != null">device_status = #{item.deviceStatus},</if><if test="item.updateTime != null">update_time = #{item.updateTime}</if></set>where sn = #{item.sn}</foreach></update><!-- 后台 设备扫码批量入库 --><insert id="batchPortalInputWarehouse">insert into device (<include refid="batchInsertDevice"></include>)values<foreach collection="list" item="item" index="index" separator=",">(#{item.id},#{item.stockStatus},#{item.deviceStatus},#{item.sn},#{item.typeId},#{item.deleted},#{item.createTime},#{item.updateTime})</foreach></insert>

Mybatis-plugs 批量新增及批量修改、IN、CASE WHEN操作相关推荐

  1. mybatis批量新增和批量更新的效率对比

    今天,为了更多了解下,mybatis批量新增和批量更新在simple/batch模式 + MySQL的rewriteBatchedStatements下效率有什么区别,做了一次实验. 实验结果,让人意 ...

  2. MyBatis + Oracle 实现批量新增和批量修改

    MyBatis + Oracle 实现批量新增(基于序列化自增长主键) mapper 接口 void batchInsert(List<ASingleProject> list); map ...

  3. Mybatis Plus重写批量新增和批量删除

    批量新增: import com.baomidou.mybatisplus.core.injector.AbstractMethod; import com.baomidou.mybatisplus. ...

  4. orcal 批量新增,批量更新多条件

    批量新增 <insert id="savePatientEmr" parameterType="java.util.List" useGeneratedK ...

  5. mysql不存在就批量新增_mysql批量插入,存在则修改,不存在则插入

    批量插入,存在则修改,不存在则插入 INSERT INTO 表名 (字段1,字段2,字段3,字段4) VALUES (字段1值,字段2值,字段3值,字段4值) ON DUPLICATE KEY UPD ...

  6. JAVA 之POI导入批量新增、批量检查、日志记录、失败原因、失败条数、数据库映射

    前言 欢迎大家来到我的博客,请各位看客们点赞.收藏.关注三连! 欢迎大家关注我的知识库,Java之从零开始·语雀 你的关注就是我前进的动力! CSDN专注于问题解决的博客记录,语雀专注于知识的收集与汇 ...

  7. mybatis mysql 批量更新_mysql批量update更新,mybatis中批量更新操作

    在日常开发中,有时候会遇到批量更新操作,这时候最普通的写法就是循环遍历,然后一条一条地进行update操作.但是不管是在服务端进行遍历,还是在sql代码中进行遍历,都很耗费资源,而且性能比较差,容易造 ...

  8. mybatis-plus的批量新增/批量更新以及问题

    批量新增/删除 1.代码中foreach insert/update 2.多线程foreach insert/update 3.mybatis xml中foreach 4.通过自定义 SQL注入器扩展 ...

  9. mybatis高级查询,批量新增

    review sql脚本 实体类 sql watch out mapper mapper test 之前的比较分散,自己用... sql脚本 -- auto-generated definition ...

最新文章

  1. ci持续集成工程师前景_持续集成CI---失败原因
  2. 独家 | Kaggle 大神Dan Becker与你分享他的数据科学之旅!
  3. c语言序列sequence,Sequence
  4. 【VS开发】【编程开发】【C/C++开发】结构体中的数组与指针的内存分配情况说明...
  5. 问题小结(6)-listview滚动条相关
  6. linux指定查看文件目录,【Linux】查看指定目录下的每个文件或目录的大小
  7. [python]一个遍历多层文件夹,然后替换文件内容和目录名称的案例
  8. 拓端tecdat|R语言对NASA元数据进行文本挖掘的主题建模分析
  9. Json对象和Json字符串的区别
  10. lwj_C#_homework get set 属性
  11. jacob为word添加水印
  12. 科兴新冠疫苗获准紧急用于巴西3至5岁儿童
  13. 究竟哪些语句是属于DDL?
  14. 发育网络(DN): 一个涌现的图灵机
  15. AI时代,与其恐惧,不如拥抱。
  16. web前端开发技术 web课程设计 网页规划与设计web期末作业设计网页
  17. Unix中sed用法
  18. Oracle 触发器详解(trigger)
  19. OpenCV图形图像击中击不中HITMISS变换处理基础知识
  20. POJ 1253:Dungeon Master

热门文章

  1. php虚线_虚线 · 前端技术总结 · 看云
  2. Mendix快速开发网页移动App低代码化平台
  3. 编译原理实验(三)——LR(0)语法分析
  4. Matlab:控制流
  5. 邮箱怎么注册好呢?简单的邮箱注册方法
  6. Python连载系列:字符串和常见数据类型
  7. 为你的网站加上和风天气插件
  8. QQ小程序发送模板消息
  9. php中base64和js中base64可互相加解密
  10. Redis 哨兵集群实现高可用