Mybatis 插入与批量插入以及多参数批量删除
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对象没有默认的键。 |
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 插入与批量插入以及多参数批量删除相关推荐
- Mybatis 针对ORACLE和MYSQL的批量插入与多参数批量删除
今天利用Mybatis的<for each>标签做oracle的批量插入数据时,发现和MySQL数据库有区别.在此记录下,以防之后再踩坑. 一.批量插入: 1.controller: /* ...
- mybatis方法参数是list的批量插入
要想批量插入,首先要知道forEach标签: foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合. foreach元素的属性主要有 item,index,collection ...
- mybatis批量插入(insert)和批量更新(update)
文章目录 一.Mybatis批量插入 二.批量更新 前言:这两天在做mybatis批量插入和更新的时候,对这块不是很清楚,所以今天写篇文章,巩固加深印象. 一.Mybatis批量插入 批量插入的sql ...
- java批量执行查询sql语句_详解MyBatis直接执行SQL查询及数据批量插入
一.直接执行SQL查询: 1.mappers文件节选 ${paramSQL} 2.DAO类节选 public interface SomeDAO{ List getInstanceModel(@Par ...
- mybatis多个foreach_使用 Mybatis 的 foreach 批量模糊 like 查询及批量插入
使用 mybatis 平时都是用遍历集合 in ( ) ....,其实还可以多模糊查询和批量操作等其他操作,要明白 foreach 元素的属性主要意义,灵活使用,举例如下. 1.根据多个品牌名字分类, ...
- [mybatis]动态sql_foreach_遍历集合批量插入
foreach遍历集合 collection:指定要遍历的集合 list类型的参数会特殊处理封装在map中,map的key就叫list item:将当前遍历出的元素赋值给指定的变量 #{变量名}就能取 ...
- Mybatis foreach 批量插入
在mybatis中可以使用foreach标签做批量插入和更新操作,以批量插入为例: <insert id="insertMsg" parameterType="xz ...
- Mybatis结合Oracle的foreach insert批量插入报错!
2019独角兽企业重金招聘Python工程师标准>>> 最近做一个批量导入的需求,将多条记录批量插入数据库中.解决思路:在程序中封装一个List集合对象,然后把该集合中的实体插入到数 ...
- MyBatis直接执行SQL查询及批量插入数据
转:http://www.cnblogs.com/mabaishui/archive/2012/06/20/2556500.html 一.直接执行SQL查询: 1.mappers文件节选 <re ...
- vue excel导入mysql详细教程_Vue前端上传EXCEL文件,后端(springBoot+MyBatis+MySQL)解析EXCEL并批量插入/更新数据库...
文章目录 Vue前端 后端 controller层 service层:如何解析Excel文件 MyBatis:实现批量插入 在mysql中设置唯一索引Unique Index MySQL中的inser ...
最新文章
- archlinux 安装 Windows 字体
- 烂泥:SQL Server 2005数据库备份与恢复
- sql 树状结构中知道 父节点与孙节点_sqlserver树状结构表中,获取指定节点的所有父节点路径_MySQL...
- 一个程序掌握C++带参构造函数、带有默认参数的构造函数【C++类的经典使用案例】
- 笑谈ArcToolbox (5) 非我族类
- Redisbook学习笔记(1)字典(2)
- MATLAB时域频域波形显示GUI
- vue3.0 ele-plus 与 antd-design的使用
- 《单片机原理及应用(魏洪磊)》第六章第10题
- 《乾》: 相时而动的龙精神
- 联想电脑尺寸在哪里看_如何检查联想电脑型号【详细介绍】
- 好佳居软装十大品牌 软装市场发展状况如何
- 手把手教你5G时代Webview的正确使用姿势,小白也能看明白
- 你知道吗?重逢是为了下次更好的相遇
- 一年降本 40%:基于云服务的技术成本精细化运营策略
- golang开发的准备 - gvm(go版本管理软件)的安装
- 算法笔记(1)-常用推荐算法总结
- Deep Supervision:深度监督(2014)+DHM
- PCB手工布线,覆铜,logo,倒圆角,制版
- 数据库:区分笛卡儿积、自然连接、内连接、等值连接、外连接
热门文章
- Atitit 文件上传 架构设计 实现机制 解决方案 实践java php c#.net js javascript c++ python
- atitit。win7 win8 win9 win10 win11 新特性总结与战略规划
- atitit.sql server2008导出导入数据库大的表格文件... oracle mysql
- paip.没有源码的情况下更改ASP.net ASPX页
- paip.html调试工具--显示控件名称与值
- 五种开源API网关实现组件对比
- Python实现Diffie-Hellman密钥交换协议
- ETF:一种让美国“80后”趋之若鹜的投资工具
- (转)谭志勇、赵微:区块链技术在中国商品交易市场的应用与发展
- 预告:阿里云存储+企业出海全球化网络新品发布会 | 凌云时刻