MyBatis向数据库中批量插入数据

简介: Foreach标签 foreach:collection:指定要遍历的集合;表示传入过来的参数的数据类型。该参数为必选。要做 foreach 的对象,作为入参时,List 对象默认用 list 代替作为键,数组对象有 array 代替作为键,Map 对象没有默认的键。

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表示的就是mapkey,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>

相关文章
|
3天前
|
存储 SQL 监控
Visual Basic与数据库交互:实现数据访问和管理
【4月更文挑战第27天】本文探讨了使用Visual Basic进行数据库编程的基础,包括数据库基础、连接、数据访问技术如ADO.NET,数据绑定,事务处理,存储过程与视图。还强调了性能优化、安全性、测试与调试,以及持续维护的重要性。通过掌握这些概念和技巧,开发者能构建高效、可靠的数据驱动应用。
|
1月前
|
存储 Oracle 关系型数据库
Dataphin常见问题之想要周期执行任务如何解决
Dataphin是阿里云提供的一站式数据处理服务,旨在帮助企业构建一体化的智能数据处理平台。Dataphin整合了数据建模、数据处理、数据开发、数据服务等多个功能,支持企业更高效地进行数据治理和分析。
|
1月前
Mybatis+mysql动态分页查询数据案例——测试类HouseDaoMybatisImplTest)
Mybatis+mysql动态分页查询数据案例——测试类HouseDaoMybatisImplTest)
22 1
|
8天前
|
关系型数据库 Apache 流计算
手把手教你实现 OceanBase 数据到阿里云数据库 SelectDB 内核版 Apache Doris 的便捷迁移|实用指南
本文介绍了如何将数据从 OceanBase 迁移到阿里云数据库 SelectDB 内核版 Apache Doris。提供 3 种数据同步方法 1. 使用 DataX,下载 DataX 并编写配置文件,通过 OceanBaseReader 和 DorisWriter 进行数据迁移。 2. 利用 Apache Doris 的 Catalog功 能,将 OceanBase 表映射到 Doris 并插入数据。 3. 通过Flink CDC,设置 OceanBase 环境,配置 Flink 连接器,实现实时数据同步。
手把手教你实现 OceanBase 数据到阿里云数据库 SelectDB 内核版 Apache Doris 的便捷迁移|实用指南
|
1月前
Mybatis+mysql动态分页查询数据案例——房屋信息的实现类(HouseDaoMybatisImpl)
Mybatis+mysql动态分页查询数据案例——房屋信息的实现类(HouseDaoMybatisImpl)
22 2
|
20天前
|
缓存 NoSQL 算法
17- 数据库有1000万数据 ,Redis只能缓存20w数据, 如何保证Redis中的数据都是热点数据 ?
保证Redis中的20w数据为热点数据,可以通过设置Redis的LFU(Least Frequently Used)淘汰策略。这样,当数据库有1000万数据而Redis仅能缓存20w时,LFU会自动移除使用频率最低的项,确保缓存中的数据是最常使用的。
55 8
|
1月前
Mybatis+mysql动态分页查询数据案例——工具类(MybatisUtil.java)
Mybatis+mysql动态分页查询数据案例——工具类(MybatisUtil.java)
16 1
|
1天前
|
分布式计算 DataWorks 关系型数据库
DataWorks产品使用合集之在使用 DataWorks 数据集成同步 PostgreSQL 数据库中的 Geometry 类型数据如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
6 0
|
6天前
|
SQL 关系型数据库 API
从API获取数据并将其插入到PostgreSQL数据库:步骤解析
使用Python处理从API获取的数据并插入到PostgreSQL数据库:安装`psycopg2`,建立数据库连接,确保DataFrame与表结构匹配,然后使用`to_sql`方法将数据插入到已存在的表中。注意数据准备、权限设置、性能优化和安全处理。
|
12天前
|
存储 关系型数据库 MySQL
如何处理爬取到的数据,例如存储到数据库或文件中?
处理爬取的数据,可存储为txt、csv(适合表格数据)或json(适合结构化数据)文件。若需存储大量数据并执行复杂查询,可选择关系型(如MySQL)或非关系型(如MongoDB)数据库。以MySQL为例,需安装数据库和Python的pymysql库,创建数据库和表,然后编写Python代码进行数据操作。选择存储方式应考虑数据类型、数量及后续处理需求。
21 1