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向数据库中批量插入数据的更多相关文章

  1. C# 批量插入表SQLSERVER SqlBulkCopy往数据库中批量插入数据

    #region 帮助实例:SQL 批量插入数据 多种方法 /// <summary> /// SqlBulkCopy往数据库中批量插入数据 /// </summary> /// ...

  2. 向mysql中批量插入数据的性能分析

    MYSQL批量插入数据库实现语句性能分析 假定我们的表结构如下 代码如下   CREATE TABLE example (example_id INT NOT NULL,name VARCHAR( 5 ...

  3. net core天马行空系列-各大数据库快速批量插入数据方法汇总

    1.前言 hi,大家好,我是三合.我是怎么想起写一篇关于数据库快速批量插入的博客的呢?事情起源于我们工作中的一个需求,简单来说,就是有一个定时任务,从数据库里获取大量数据,在应用层面经过处理后再把结果 ...

  4. MyBatis中批量插入数据对插入记录数的限制

    <基于Mybatis框架的批量数据插入的性能问题的探讨>(作者:魏静敏 刘欢杰 来源:<计算机光盘软件与应用> 2013 年第 19 期)中提到批量插入的记录数不能超过1000 ...

  5. 使用存储过程在mysql中批量插入数据

    一.在mysql数据库中创建一张表test DROP TABLE IF EXISTS `test`; CREATE TABLE `test` ( `id` INT (11), `name` VARCH ...

  6. SQLSERVER数据库中批量导入数据的几种方法

    第一:使用Select Into 语句 如果企业数据库都是采用SQL Server数据库的话,则可以利用select into语句实现数据的导入. select into语句的作用是把数据从另外一个数 ...

  7. MySQL中批量插入数据

    不管怎么样, 你需要大量的数据, 那么问题来了, 怎么快速地插入呢? 1. 这是我创建的一个批量插入的存储过程… 当然, 你可以把参数去掉, 一次性插入1W, 10W… CREATE DEFINER= ...

  8. mybatis中批量插入数据

    <insert id="insertIntoDevAct" parameterType="java.util.List"><foreach c ...

  9. java实现数据库之间批量插入数据

    package comnf147Package; import java.sql.*; public class DateMigrationLagou { //连接SQLite private Con ...

随机推荐

  1. Laravel 常见错误 1071 Specified key was too long

    Laravel 5.5 + Mysql 5.5 ,执行 migrate 时,提示索引长度超过指定的 1000 bytes 原因: Mysql 对索引有一定的长度限制,版本不同长度不同: MyIsAm ...

  2. python threading模块使用 以及python多线程操作的实践(使用Queue队列模块)

    今天花了近乎一天的时间研究python关于多线程的问题,查看了大量源码 自己也实践了一个生产消费者模型,所以把一天的收获总结一下. 由于GIL(Global Interpreter Lock)锁的关系 ...

  3. 装CentOS 系统

    一. 二. 三. 四. 五. 六. 七. 八. 九. 十. 十一. 十二. 十三. 十四. 十五. 十六. 十七. 十八. setup设置

  4. std::string 字符串替换

    std::string 没有原生的字符串替换函数,需要自己来完成 string& replace_str(string& str, const string& to_repla ...

  5. 斜率DP个人理解

    斜率DP 斜率DP的一版模式:给你一个序列,至多或分成m段,每段有花费和限制,问符合情况的最小花费是多少: 一版都用到sum[],所以符合单调,然后就可以用斜率优化了,很模板的东西: 如果看不懂可以先 ...

  6. P3201 [HNOI2009]梦幻布丁

    题目描述 N个布丁摆成一行,进行M次操作.每次将某个颜色的布丁全部变成另一种颜色的,然后再询问当前一共有多少段颜色.例如颜色分别为1,2,2,1的四个布丁一共有3段颜色. 输入输出格式 输入格式: 第 ...

  7. Codeforces Round #423 (Div. 2, rated, based on VK Cup Finals) A,B,C

    A.题目链接:http://codeforces.com/contest/828/problem/A 解题思路: 直接暴力模拟 #include<bits/stdc++.h> using ...

  8. day6 字符串

    重复输出字符串 # * 重复输出字符串 print("hello"*2) 字符串切片 # 字符串也拥有索引,和列表切片操作类似 print("helloworld&quo ...

  9. 洛谷 P1053 篝火晚会 解题报告

    P1053 篝火晚会 题目描述 佳佳刚进高中,在军训的时候,由于佳佳吃苦耐劳,很快得到了教官的赏识,成为了"小教官".在军训结束的那天晚上,佳佳被命令组织同学们进行篝火晚会.一共有 ...

  10. 初探angular2

    Angular2 是一款开源JavaScript库,由Google维护,用来协助单一页面应用程序运行. Angular2 是 Angular 1.x 的升级版本,性能上得到显著的提高,能很好的支持 W ...