mybatis-210721-06---动态sql-foreach批量插入

java进阶|MyBatis系列文章(六)XML版批量操作sql 一,MyBatis框架介绍MyBatis是支持定制化SQL,存储过程以及高级映射的优秀的持久层框架。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。 MyBati... 阅读详情

mybatis-210721-06—动态sql-foreach批量插入


	插入多条员工数据
	
	这个MySQL的的批量插入
	
	如果在Oracle中批量插入,以下方法就不管用了,请参考尚硅谷mybatis视频
		https://www.bilibili.com/video/BV1mW411M737?p=46
		https://www.bilibili.com/video/BV1mW411M737?p=47

EmployeeMapper.java

package com.bgy.mybatis.dao;

import java.util.List;
import org.apache.ibatis.annotations.Param;
import com.bgy.mybatis.bean.Employee;

public interface EmployeeMapper {
	
	public void addEmps(@Param("emps")List<Employee> emps);
	
	public void addEmps02(@Param("emps")List<Employee> emps);
}

EmployeeMapper.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.bgy.mybatis.dao.EmployeeMapper">
	
	<!--
		批量保存方式01
			mysql下批量保存,可以使用foreach遍历
	-->
	<insert id="addEmps">
		insert into
			tbl_employee(last_name,email,gender,d_id)
		values
			<foreach collection="emps" item="emp" separator=",">
				(#{emp.lastName},#{emp.email},#{emp.gender},#{emp.dept.id})
			</foreach>
	</insert>
	
	<!--
		批量保存方式02
		mysql下批量保存,可以使用foreach遍历
		这种方式需要在连接数据库属性中(dbconfig.properties)中添加
			&allowMultiQueries=true
		jdbc.url=jdbc:mysql://localhost:3306/mybatis_test_210716_01?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT&allowMultiQueries=true
	-->
	<insert id="addEmps02">
		<foreach collection="emps" item="emp" separator=";">
			insert into
				tbl_employee(last_name,email,gender,d_id)
			values
				(#{emp.lastName},#{emp.email},#{emp.gender},#{emp.dept.id})
		</foreach>
	</insert>
</mapper>

MybatisTest.java

package com.bgy.mybatis.test;

import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.jupiter.api.Test;

import com.bgy.mybatis.bean.Department;
import com.bgy.mybatis.bean.Employee;
import com.bgy.mybatis.dao.EmployeeMapper;

class MybatisTest {
	
	public SqlSessionFactory getSqlSessionFactory() throws IOException {
		String resource = "mybatis-config.xml";
		InputStream inputStream = Resources.getResourceAsStream(resource);
		return new SqlSessionFactoryBuilder().build(inputStream);
	}

	
	/**·
	 * 测试sql——foreach批量插入方式01
	 * @throws IOException
	 */
	@Test
	public void test() throws IOException{
		SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
		SqlSession sqlSession = sqlSessionFactory.openSession();
		
		try {
			EmployeeMapper mapper = sqlSession.getMapper(EmployeeMapper.class);
			
			List<Employee> emps = new ArrayList<Employee>();
			emps.add(new Employee(null,"huangzhong","hz@qq.com","1",new Department(1)));
			emps.add(new Employee(null,"diaochan","dc@qq.com","0",new Department(2)));
			
			mapper.addEmps(emps);
			
			sqlSession.commit();
		} finally {
			sqlSession.close();
		}
	}
	
	
	/**·
	 * 测试sql——foreach批量插入方式02
	 * @throws IOException
	 */
	@Test
	public void test02() throws IOException{
		SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
		SqlSession sqlSession = sqlSessionFactory.openSession();
		
		try {
			EmployeeMapper mapper = sqlSession.getMapper(EmployeeMapper.class);
			
			List<Employee> emps = new ArrayList<Employee>();
			emps.add(new Employee(null,"huangzhong02","hz02@qq.com","1",new Department(1)));
			emps.add(new Employee(null,"diaochan02","dc02@qq.com","0",new Department(2)));
			
			mapper.addEmps02(emps);
			
			sqlSession.commit();
		} finally {
			sqlSession.close();
		}
	}
}

dbconfig.properties

jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis_test_210716_01?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone = GMT&allowMultiQueries=true
jdbc.username=root
jdbc.password=admin
老司机学习MyBatis之动态SQL使用foreach在MySQL中批量插入 一、前言 当我们使用MyBatis一次性插入多条数据时候也可以使用foreach标签,本文我们将介绍MySQL中使用MyBatis批量插入数据的两种方式。 二、案例 ①第一种方式 修改EmpMapper文件,增加batchSave方法 /** * 批量插入数据 * @param empList */ public void batchSave(List<Emp> empLi... 阅读详情

相关推荐

FCL碰撞检测库在Windows下的编译与配置(MinGW+CMake)

本文详细介绍了在Windows系统下使用MinGW和CMake编译配置FCL碰撞检测库的完整流程。内容涵盖MinGW-w64、CMake的安装与环境配置,关键依赖库Eigen和libccd的安装,以及FCL源码的编译、安装与实战测试。重点解析了CMake配置命令中的关键参数与常见错误解决方案,旨在帮助开发者高效完成FCL在Windows平台的部署,适用于机器人、游戏物理引擎等需要精确碰撞检测的开发场景。

sunny的博客 483

mybatis foreach执行多条sql配置_MyBatis源码分析三:Sql执行

一、MyBatis中Sql执行过程先上一段代码,看直接调用MyBatis Api是如何执行Sql的: // 获取配置文件输入流 InputStream inputStream = Resources.getResourceAsStream("META-INF/spring/mybatis-config.xml"); // 通过SqlSessionFactoryBuilder的bui...

weixin_29192211的博客 530

仪表数字图像识别的传统方法

虽然现有很多机器学习算法能够准确地识别数字,但是传统方法对于一些需要离线识别且计算能力有限的下位机设备来说,仍然有非常不错的效果。因此,今天就向大家讲解一下传统的数字识别方法在仪表读数方面的应用。 1.图像预处理技术 1.1 主要流程 图像处理依次需要进行图片预处理、字轮区域定位、字符分割和字符识别等过程。其中图像处理流程如下图所示。 2. 详细过程 2.1 灰度化 为了减小图像原始数据量,本系...

XYZ 4523

mysql foreach 写法,多条 sql 与一条 sql 的性能消耗分析

比如有 100 条 sql,如果不手动开启事务把这 100 条 sql 放在同一个事务中执行,那么这 100 条 sql 会分别在 100 个隐式事务中。每个事务占用一个连接,这样就占用了 100 个连接。

JellyfishMIX 的博客 1160

动态博弈、威胁与承诺(博弈论入门学习笔记四)

0 动态博弈 动态博弈:行动有先后顺序,不同的参与人在不同时点行动,先行动者的选择影响后行动者的选择空间,后行动者可以观察到先行动者做了什么选择。例如下棋、消费者和商家讨价还价、谈婚论嫁、企业之间的价格战等等。 因此,为了做出最优的行动选择,每个参与人都应该思考:如果我如此选择,对方将如何应对?如果我是他,我将会如何行动?给定他的应对,什么是我的最优选择? 动态博弈中的战略:在博弈开始之前就...

stepho的博客 1万+

Delphi 12社区版免费了!手把手教你搭建跨平台开发环境(Windows/macOS/Android/iOS)

本文详细介绍了如何利用新发布的Delphi 12社区版,免费搭建支持Windows、macOS、Android和iOS的跨平台开发环境。内容涵盖从环境准备、安装、配置各平台SDK(包括Android与macOS/iOS的PAServer连接),到创建首个FireMonkey跨平台应用、集成数据库以及调试部署的完整实战流程,帮助开发者零成本启动高效开发。

butter的博客 975

SQL使用foreach循环进行批量操作(mybatis.xml中foreach的用法)

参考: https://blog.youkuaiyun.com/Mr_YeShaoFei/article/details/93637571 https://blog.youkuaiyun.com/qq_39505065/article/details/108085527 首先明确foreach里面的各个标签作用 foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合。 foreach元素的属性主要有 item,index,collection,open,separator,close。 item :.

此人很懒,什么都没有写 6582

幸狐RV1106开发板运行Yolo8示例

rknn_model_zoo 是瑞芯微官方提供的 RKNPU 支持的各种主流算法的部署示例,目前对 Luckfox Pico 所使用的 RV1103/RV1106 有限支持,最新的示例支持 mobilenet 模型部署和 yolo 模型部署,本章以部署 yolov8修改版本为例介绍 rknn_model_zoo 示例的使用。:可选项,用于指定 RKNN 模型的保存路径,默认保存在 ONNX 模型同一目录下,名称为 ‘yolov8.rknn’例如“rv1106”。

qq_42730522的博客 3224

mybatis的xml中一个方法多条sql一起执行

有些时候需要批 <foreach collection="list" item="item" separator=";"> UPDATE employee SET commission_workflow = #{workflow} WHERE commission_period_id = #{item.commissionPeriodId} AND employee_id = #{item.employeeId} </foreach> 需要在 jdbc:my

小帅的博客 2724

银河麒麟V10离线升级OpenSSH实战:从编译到回滚全流程

OpenSSH作为Linux系统远程登录的核心组件,其版本升级直接关系到系统安全与等保合规。在信创环境下,银河麒麟V10自带的OpenSSH版本往往无法满足漏洞扫描与安全加固要求,而离线编译升级涉及依赖处理、编译参数、服务替换与回滚方案等多个技术环节。本文围绕银河麒麟V10(x86_64)平台,详细讲解OpenSSH离线升级的完整实操流程,包括环境摸底、依赖包安装、源码编译、配置文件兼容性处理、服务重启验证以及常见问题排查,并分享批量升级与安全加固的工程经验,帮助运维人员在不断网、不重装的前提下一次成功完成

weixin_30582943的博客 385

内网渗透(二)之基础知识-工作组介绍

在一个大型单位里,可能有成百上千台计算机互相连接组成局域网,它们都会列在"网络"(网上邻居)内。如果不对这些计算机进行分组,网络的混乱程度是可想而知的 为了解决这一问题,产生了工作组( Work Group)这个概念。将不同的计算机按功能(或部 门)分别列入不同的工作组,例如技术部的计算机都列入"技术部"工作组、行政部的计算机都 列入"行政部"工作组。要想访问某个部门的资源,只要在"网络"里双击该部门的工作组名 就可以看到该部门的所有计算机了。相比不分组的情况,这样的情况有序得多(尤其对大型局域网来说)。

把自己活成一道光,因为你不知道,谁会借着你的光,走出了黑暗。请保持心中的善良,因为你不知道,谁会借着你的善良,走出了绝望。请保持你心中的信仰,因为你不知道,谁会借着你的信仰,走出了迷茫。请相信自己的力量,因为你不知道,谁会因为相信你,开始相信了自己.... 1219

MyBatis一次执行多条SQL语句的操作

Role role = new Role("游客");

小杨的博客 3964

rknn-toolkit推理yolov5-face.rknn模型--python代码

import os import urllib import traceback import time import sys import numpy as np import cv2 from rknn.api import RKNN ONNX_MODEL = 'yolov5s.onnx' RKNN_MODEL = 'yolov5s.rknn' IMG_PATH = './bus.jpg' DATASET = './dataset.txt' QUANTIZE_ON = True BOX_THR.

C/C++、嵌入式开发、深度学习算法、模型部署与推理优化 3079

java 原生sql批量插入_使用Mybatis的xml配置批量插入操作(批量插入只执行一条sql语句)...

使用Mybatis的xml配置批量插入操作(批量插入只执行一条sql语句)发布时间:2018-11-25 10:35,浏览次数:589, 标签:Mybatisxmlsql现在有两个表,分别是 订单条目表:orderitem 和 商品表:introduction;现在我有需求是将查询出 某些商品表 中的 商品的某些属性 插入到 订单条目表 中的 某些属性中.1 现在xml文件中写好两个表需要对应的字...

weixin_32521765的博客 1680

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

【Mybatis编程:批量插入相册(动态SQL)】

Mybatis编程:批量插入相册(动态SQL)

居然天上楼的博客 605

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

动态sql批量插入数据

mybatis动态sql批量新增数据

m0_61811711的博客 1533

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Mapper.xml动态sql

Mapper.xml动态sql

skqpp1314的博客 3864

实现MyBatis Mapper XML文件增量动态刷新,自动加载,热加载,热部署

    最初启动服务后Mapper XML文件,必须重启服务才能生效,这样就大大影响了我们的开发效率。     网上同学们也有实现类似功能,但都是全部清空,全部刷新XML,这样硬件消耗比较严重,加载时间也比较长。我们只修改了几行SQL就没有必要全部加载,只需要加载修改的问题就行了。     后来为了急需解决这个问题,进行修改MyBatis源码实现Mapper XML增量刷新,直接覆盖方式实...

ThinkGem 1643

MyBatis动态SQL foreach标签实现批量插入

需求:查出给定id的记录: SELECT * FROM tb1_emplyee WHERE id IN #{item_id} 关于foreach标签,有几个属性应该注意一下: collection:指定要遍历的集合: list类型的参数会特殊处理封装在map中,map的key就叫l

记忆碎片 6万+

28.MyBatis_动态sql_foreach_mysql下foreach批量插入的两种方式

dao接口: public interface EmployeeDynamicSQLMapper { public void addEmps(@Param("emps") List<Employee> emps); } 方法一:MySql下批量保存:可以foreach遍历mysql支持values(),(),()语法 <insert id="addEmps" > insert into tbl_employee (last_name,email,g

Adela0916的博客 427

MyBatis动态sql_foreach下foreach批量插入两种方式

MyBatis动态sql_foreach下foreach批量插入两种方式 EmployeeMapperDynamicSQL.java package com.cn.mybatis.dao; import java.util.List; import org.apache.ibatis.annotations.Param; import com.cn.zhu.bean.Empl

zhupengqq的博客 2万+

mysql ibatis 批量插入_mybatis动态sql之使用foreach进行批量插入的两种方式

EmployeeMapperDynamicSql.javapackagecom.gong.mybatis.mapper;importjava.util.List;importjava.util.Map;importorg.apache.ibatis.annotations.MapKey;importorg.apache.ibatis.annotations.Param;importcom.gong...

weixin_28692867的博客 783

mysql ibatis 批量插入_Mybatis-动态SQL-批量插入

批量插入时避免使用在Mybatis外面多次调用的方式,这样效率太低,也浪费连接资源,下面针对Oracle和MySQL各写出两种批量进行插入的方式:在写测试案例之前先对涉及到的配置讲解一下--|id:该sql配置的唯一标识--|databaseId:该sql适合在哪个数据库环境下执行--|collection:集合名称,如果是List,默认名称是list;如果是Array,默认名称是array;你也...

weixin_36358383的博客 464

mysql批量执行sql语句_批量执行动态SQL语句

下面是编程之家 jb51.cc 通过网络收集整理的代码片段。编程之家小编现在分享给大家,也给大家做个参考。-- exesql_batchdeclare-- incomming paramv_orisql VARCHAR2(1024):= 'create table TABLE_[N]_[D] as select * from TABLE where 1=2';-- original sqlv_be...

weixin_42120563的博客 1037

mybatis-210721-02---动态sql-trim自定义字符串截取

mybatis-210721-02—动态sql-trim自定义字符串截取 EmployeeMapper.java EmployeeMapper.xml(笔记在这儿哦) MybatisTest.java EmployeeMapper.java package com.bgy.mybatis.dao; import java.util.List; import com.bgy.mybatis.bean.Employee; public interface EmployeeMapper { publ

白光一的博客 1612
上一篇: mybatis-210721-05---动态sql-foreach遍历集合
下一篇: mybatis-210721-07---动态sql-内置参数_parameter_databaseId&bind使用
白光一
博客等级 码龄9年 0粉丝 174原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值