2019独角兽企业重金招聘Python工程师标准>>>

(一)批量插入

实体类:

import java.io.Serializable;
public class AttachmentTable implements Serializable {private static final long serialVersionUID = 8325882509007088323L;private Integer id;// 附件名称private String name;// 日志IDprivate Integer logid;// 附件URLprivate String url;// getter/setter.......
}

Mapper接口:

import java.util.List;
import model.AttachmentTable;
public interface AttachmentTableMapper {int insert(AttachmentTable record);void insertByBatch(List<AttachmentTable> attachmentTables);
}

Mapper.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="mapper.AttachmentTableMapper"><resultMap id="BaseResultMap" type="model.AttachmentTable"><id column="id" jdbcType="INTEGER" property="id" /><result column="name" jdbcType="VARCHAR" property="name" /><result column="logID" jdbcType="INTEGER" property="logid" /></resultMap><resultMap extends="BaseResultMap" id="ResultMapWithBLOBs" type="model.AttachmentTable"><result column="url" jdbcType="LONGVARCHAR" property="url" /></resultMap><sql id="Base_Column_List">id, name, logID</sql><sql id="Blob_Column_List">url</sql><insert id="insert" parameterType="model.AttachmentTable">insert into attachment_table (id, name, logID,url)values (#{id,jdbcType=INTEGER}, #{name,jdbcType=VARCHAR}, #{logid,jdbcType=INTEGER},#{url,jdbcType=LONGVARCHAR})</insert><insert id="insertByBatch" parameterType="java.util.List">insert into attachment_table (name, logID,url)values<foreach collection="list" item="item" index="index" separator=",">(#{item.name,jdbcType=VARCHAR}, #{item.logid,jdbcType=INTEGER},#{item.url,jdbcType=LONGVARCHAR})</foreach></insert>
</mapper>

【注:标红的地方是需要注意的地方,我第一次做时直接“#{name,jdbcType=VARCHAR}”,没有加前缀“item”,导致报错“找不到name”】

(二)多参数批量删除示例

package com.vrv.linkdood.app.workreport.demomodule.mapper;import org.apache.ibatis.annotations.Param;public interface AttachmentTableMapper {void deleteByLogIdAndNames(@Param("logid") Integer logID, @Param("names") String[] names);
}
<delete id="deleteByLogIdAndNames">delete from attachment_tablewhere logid = #{logid,jdbcType=INTEGER} AND NAME IN<foreach collection="names" item="item" index="index" open="(" close=")" separator=",">#{item}</foreach></delete>

 
属性 描述
item 循环体中的具体对象。支持属性的点路径访问,如item.age,item.info.details。
具体说明:在list和数组中是其中的对象,在map中是value。
该参数为必选。
collection

要做foreach的对象,作为入参时,List<?>对象默认用list代替作为键,数组对象有array代替作为键,Map对象没有默认的键。
当然在作为入参时可以使用@Param("keyName")来设置键,设置keyName后,list,array将会失效。 除了入参这种情况外,还有一种作为参数对象的某个字段的时候。举个例子:
如果User有属性List ids。入参是User对象,那么这个collection = "ids"
如果User有属性Ids ids;其中Ids是个对象,Ids有个属性List id;入参是User对象,那么collection = "ids.id"
上面只是举例,具体collection等于什么,就看你想对那个元素做循环。
该参数为必选。

separator 元素之间的分隔符,例如在in()的时候,separator=","会自动在元素中间用“,“隔开,避免手动输入逗号导致sql错误,如in(1,2,)这样。该参数可选。
open foreach代码的开始符号,一般是(和close=")"合用。常用在in(),values()时。该参数可选。
close foreach代码的关闭符号,一般是)和open="("合用。常用在in(),values()时。该参数可选。
index 在list和数组中,index是元素的序号,在map中,index是元素的key,该参数可选。
 

转载于:https://my.oschina.net/u/3229047/blog/841405

Mybatis 插入与批量插入以及多参数批量删除相关推荐

  1. Mybatis 针对ORACLE和MYSQL的批量插入与多参数批量删除

    今天利用Mybatis的<for each>标签做oracle的批量插入数据时,发现和MySQL数据库有区别.在此记录下,以防之后再踩坑. 一.批量插入: 1.controller: /* ...

  2. mybatis方法参数是list的批量插入

    要想批量插入,首先要知道forEach标签: foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合. foreach元素的属性主要有 item,index,collection ...

  3. mybatis批量插入(insert)和批量更新(update)

    文章目录 一.Mybatis批量插入 二.批量更新 前言:这两天在做mybatis批量插入和更新的时候,对这块不是很清楚,所以今天写篇文章,巩固加深印象. 一.Mybatis批量插入 批量插入的sql ...

  4. java批量执行查询sql语句_详解MyBatis直接执行SQL查询及数据批量插入

    一.直接执行SQL查询: 1.mappers文件节选 ${paramSQL} 2.DAO类节选 public interface SomeDAO{ List getInstanceModel(@Par ...

  5. mybatis多个foreach_使用 Mybatis 的 foreach 批量模糊 like 查询及批量插入

    使用 mybatis 平时都是用遍历集合 in ( ) ....,其实还可以多模糊查询和批量操作等其他操作,要明白 foreach 元素的属性主要意义,灵活使用,举例如下. 1.根据多个品牌名字分类, ...

  6. [mybatis]动态sql_foreach_遍历集合批量插入

    foreach遍历集合 collection:指定要遍历的集合 list类型的参数会特殊处理封装在map中,map的key就叫list item:将当前遍历出的元素赋值给指定的变量 #{变量名}就能取 ...

  7. Mybatis foreach 批量插入

    在mybatis中可以使用foreach标签做批量插入和更新操作,以批量插入为例: <insert id="insertMsg" parameterType="xz ...

  8. Mybatis结合Oracle的foreach insert批量插入报错!

    2019独角兽企业重金招聘Python工程师标准>>> 最近做一个批量导入的需求,将多条记录批量插入数据库中.解决思路:在程序中封装一个List集合对象,然后把该集合中的实体插入到数 ...

  9. MyBatis直接执行SQL查询及批量插入数据

    转:http://www.cnblogs.com/mabaishui/archive/2012/06/20/2556500.html 一.直接执行SQL查询: 1.mappers文件节选 <re ...

  10. vue excel导入mysql详细教程_Vue前端上传EXCEL文件,后端(springBoot+MyBatis+MySQL)解析EXCEL并批量插入/更新数据库...

    文章目录 Vue前端 后端 controller层 service层:如何解析Excel文件 MyBatis:实现批量插入 在mysql中设置唯一索引Unique Index MySQL中的inser ...

最新文章

  1. archlinux 安装 Windows 字体
  2. 烂泥:SQL Server 2005数据库备份与恢复
  3. sql 树状结构中知道 父节点与孙节点_sqlserver树状结构表中,获取指定节点的所有父节点路径_MySQL...
  4. 一个程序掌握C++带参构造函数、带有默认参数的构造函数【C++类的经典使用案例】
  5. 笑谈ArcToolbox (5) 非我族类
  6. Redisbook学习笔记(1)字典(2)
  7. MATLAB时域频域波形显示GUI
  8. vue3.0 ele-plus 与 antd-design的使用
  9. 《单片机原理及应用(魏洪磊)》第六章第10题
  10. 《乾》: 相时而动的龙精神
  11. 联想电脑尺寸在哪里看_如何检查联想电脑型号【详细介绍】
  12. 好佳居软装十大品牌 软装市场发展状况如何
  13. 手把手教你5G时代Webview的正确使用姿势,小白也能看明白
  14. 你知道吗?重逢是为了下次更好的相遇
  15. 一年降本 40%:基于云服务的技术成本精细化运营策略
  16. golang开发的准备 - gvm(go版本管理软件)的安装
  17. 算法笔记(1)-常用推荐算法总结
  18. Deep Supervision:深度监督(2014)+DHM
  19. PCB手工布线,覆铜,logo,倒圆角,制版
  20. 数据库:区分笛卡儿积、自然连接、内连接、等值连接、外连接

热门文章

  1. Atitit  文件上传  架构设计 实现机制 解决方案  实践java php c#.net js javascript  c++ python
  2. atitit。win7 win8 win9 win10 win11 新特性总结与战略规划
  3. atitit.sql server2008导出导入数据库大的表格文件... oracle mysql
  4. paip.没有源码的情况下更改ASP.net ASPX页
  5. paip.html调试工具--显示控件名称与值
  6. 五种开源API网关实现组件对比
  7. Python实现Diffie-Hellman密钥交换协议
  8. ETF:一种让美国“80后”趋之若鹜的投资工具
  9. (转)谭志勇、赵微:区块链技术在中国商品交易市场的应用与发展
  10. 预告:阿里云存储+企业出海全球化网络新品发布会 | 凌云时刻