MyBatis向数据库中批量插入数据
Foreach标签
foreach:
collection:指定要遍历的集合;
表示传入过来的参数的数据类型。该参数为必选。要做 foreach 的对象,作为入参时,List 对象默认用 list 代替作为键,
数组对象有 array 代替作为键,Map 对象没有默认的键。当然在作为入参时可以使用 @Param(“keyName”) 来设置键,
设置 keyName 后,list,array 将会失效
item:将当前遍历出的元素赋值给指定的变量,然后用#{变量名},就能取出变量的值,也就是当前遍历出的元素
separator:每个元素之间的分隔符, select * from Emp where id in(1,2,3)相当于1,2,3之间的","
open:以为开始
closse:以什么结束
Index:索引,遍历list的时候index就是索引,遍历map的时候index表示的就是map的key,item就是map的值.
DAO接口中定义的方法:
|
public interface EmpMapper { //使用foreach public List<Emp> getEmpsByConditionLike(@Param("ids")List<Integer> ids); } |
@Param("ids") 将入参改名为ids 在标签 froeach中使用
映射文件:
|
<mapper namespace="cn.bdqn.mybatis.dao.EmpMapper"> <select id="getEmpsByConditionLike" resultType="cn.bdqn.mybatis.been.Emp"> select * from Emp where id in <foreach collection="ids" item="item_id" open="(" separator="," close=")"> #{item_id} </foreach> </select> </mapper> |
测试代码:
|
public static void main(String[] args) throws IOException { String resource="mybatis-config.xml"; InputStream resourceAsStream = Resources.getResourceAsStream(resource); SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream); SqlSession session = sessionFactory.openSession(); EmpMapper mapper = session.getMapper(EmpMapper.class); List list = new ArrayList(); list.add(1); list.add(2); List<Emp> emps=mapper.getEmpsByConditionLike(list); for (Emp emp2 : emps) { System.out.println(emp2); } |
Foreach批量插入:
映射配置文件
|
<!-- foreach向数据库中批量插入记录 public void insertSum(@Param("emps")List<Emp> emps ); --> <insert id="insertSum"> insert into emp(last_name,email,gender,d_id) values <foreach collection="emps" item="emp" separator="," > (#{emp.last_name},#{emp.email},#{emp.gender},#{emp.d_id}) </foreach> </insert> |
MyBatis向数据库中批量插入数据的更多相关文章
- C# 批量插入表SQLSERVER SqlBulkCopy往数据库中批量插入数据
#region 帮助实例:SQL 批量插入数据 多种方法 /// <summary> /// SqlBulkCopy往数据库中批量插入数据 /// </summary> /// ...
- 向mysql中批量插入数据的性能分析
MYSQL批量插入数据库实现语句性能分析 假定我们的表结构如下 代码如下 CREATE TABLE example (example_id INT NOT NULL,name VARCHAR( 5 ...
- net core天马行空系列-各大数据库快速批量插入数据方法汇总
1.前言 hi,大家好,我是三合.我是怎么想起写一篇关于数据库快速批量插入的博客的呢?事情起源于我们工作中的一个需求,简单来说,就是有一个定时任务,从数据库里获取大量数据,在应用层面经过处理后再把结果 ...
- MyBatis中批量插入数据对插入记录数的限制
<基于Mybatis框架的批量数据插入的性能问题的探讨>(作者:魏静敏 刘欢杰 来源:<计算机光盘软件与应用> 2013 年第 19 期)中提到批量插入的记录数不能超过1000 ...
- 使用存储过程在mysql中批量插入数据
一.在mysql数据库中创建一张表test DROP TABLE IF EXISTS `test`; CREATE TABLE `test` ( `id` INT (11), `name` VARCH ...
- SQLSERVER数据库中批量导入数据的几种方法
第一:使用Select Into 语句 如果企业数据库都是采用SQL Server数据库的话,则可以利用select into语句实现数据的导入. select into语句的作用是把数据从另外一个数 ...
- MySQL中批量插入数据
不管怎么样, 你需要大量的数据, 那么问题来了, 怎么快速地插入呢? 1. 这是我创建的一个批量插入的存储过程… 当然, 你可以把参数去掉, 一次性插入1W, 10W… CREATE DEFINER= ...
- mybatis中批量插入数据
<insert id="insertIntoDevAct" parameterType="java.util.List"><foreach c ...
- java实现数据库之间批量插入数据
package comnf147Package; import java.sql.*; public class DateMigrationLagou { //连接SQLite private Con ...
随机推荐
- Angular 行内式依赖注入
var app = angular.module('myApp', ['ng']); //创建一个自定义服务app.factory('$Debug', function () { return { d ...
- Angular 简单的Post
<!DOCTYPE html><html ng-app="myApp"><head lang="en"> <meta ...
- 【转】SpringMVC,获取request的几种方法,及线程安全性
作者丨编程迷思 https://www.cnblogs.com/kismetv/p/8757260.html 概述 在使用Spring MVC开发Web系统时,经常需要在处理请求时使用request对 ...
- Bootstrap面板
前面的话 面板(Panels)是Bootstrap框架新增的一个组件,某些时候可能需要将某些 DOM 内容放到一个盒子里.对于这种情况,可以使用面板组件.本文将详细介绍Bootstrap面板 基础面板 ...
- 自学Zabbix9.1 Network Discovery 网络发现原理
点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 自学Zabbix9.1 Network Discovery 网络发现原理 1. 网络发现简介 网络 ...
- 架构师成长之路6.5 DNS服务器搭建(添加记录、负载均衡、DNS视图)
点击返回架构师成长之路 架构师成长之路6.5 DNS服务器搭建(添加记录.负载均衡.DNS视图) 部署主DNS : 点击 部署从DNS : 点击 1.添加A记录.CNAME记录.MX记录.PTR记录 ...
- Redis中的简单动态字符串
Redis没有直接使用C语言传统的字符串表示(以空字符结尾的字符数组,以下简称C字符串),而是自己构建了一种名为简单动态字符串(simple dynamic string,SDS)的抽象类型,并将SD ...
- Dubbo 服务治理-mock实例
转: Dubbo 服务治理-mock实例 老生住长亭 2017.02.28 10:56* 字数 514 阅读 2552评论 10喜欢 2 Dubbo的mock自己折腾的实例,配置信息有点简陋,有点粗鄙 ...
- JVM性能调优2:JVM性能调优参数整理
序号 参数名 说明 JDK 默认值 使用过 1 JVM执行模式 2 -client-server 设置该JVM运行与Client 或者Server Hotspot模式,这两种模式从本质上来说是在JVM ...
- pyglet----画一个矩形
这里列出一种在窗口Window中画图的程序框架.......... #-*- coding:utf-8 -*- from pyglet.gl import * def draw_rect(x, y, ...