栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【java】批量插入数据库数据

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【java】批量插入数据库数据

在项目中往往需要一次向数据库中插入多条数据,如果使用for循环的方式插入,效率慢且资源消耗高

接下来看看如何批量将数据写入数据库中

一、Dao

ReportSampleDao.java文件

import com.seewo.module.report.dto.ReportSampleReqDto;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;

@Repository
@Mapper
public interface ReportSampleDao {
    
    void batchAddSample(@Param("samples") List samples);
}
二、Mapper

ReportSampleMapper.html文件




        
            INSERT INTO report_sample
                (report_id, elapsed, label, response_code, response_message, url)
            VALUES
                    
                    (
                        #{sample.reportId},
                        #{sample.elapsed},
                        #{sample.label},
                        #{sample.responseCode},
                        #{sample.responseMessage},
                        #{sample.url}
                    )
                
        

三、调用

ReportSampleImpl.java文件

@Resource
private ReportSampleDao reportSampleDao;

public Integer saveErrorSampleList(String reportId){
	List reportSamples = new ArrayList<>();
	// ...
	reportSampleDao.batchAddSample(reportSamples);
}
四、foreach collection的用法

foreach元素的属性主要有item,index,collection,open,separator,close

item:集合中每一个元素进行迭代时的别名index:指定一个名字,用于表示在迭代过程中,每次迭代到的位置open:该语句以什么开始separator:在每次进行迭代之间以什么符号作为分隔符close:以什么结束

在使用foreach时最关键也最容易出错的是collection属性,该属性是必须指定的,在不同情况下collection属性的值不一样,有3种情况:

    如果传入的是单参数且参数类型是一个List时,collection属性值为list如果传入的是单参数且参数类型是一个array数组时,collection的属性值为array如果传入的参数是多个时,需要把它们封装成一个Map,当然单参数也可
4.1 单参数List类型

collection的值为list时,对应的Mapper如下:


     select * from t_blog where id in
       
               #{item}       
           

测试代码:

@Test
public void dynamicForeachTest() {
    SqlSession session = Util.getSqlSessionFactory().openSession();      
    BlogMapper blogMapper = session.getMapper(BlogMapper.class);
    List ids = new ArrayList();
    ids.add(1);
    ids.add(3);
    ids.add(6);
    List blogs = blogMapper.dynamicForeachTest(ids);
    for(Blog blog : blogs)
         System.out.println(blog);
     session.close();
 }
4.2 单参数array数组类型

collection为array时,对应的Mapper代码


       select * from t_blog where title like "%"#{title}"%" and id in
       
	          #{item}
       

测试代码:

@Test
public void dynamicForeach3Test() {
		SqlSession session = Util.getSqlSessionFactory().openSession();
	    BlogMapper blogMapper = session.getMapper(BlogMapper.class);
	    final List ids = new ArrayList();
	    ids.add(1);
	    ids.add(2);
	    ids.add(3);
	    ids.add(6);
	    ids.add(7);
	    ids.add(9);
	    Map params = new HashMap();
	    params.put("ids", ids);
	    params.put("title", "中国");
	    List blogs = blogMapper.dynamicForeach3Test(params);
	    for(Blog blog : blogs)
	         System.out.println(blog);
	    session.close();
 }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/709732.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号