mysql 批量添加数据,短时间内可以批量添加上百万的数据

原理:先手动添加几个数据库,通过查询已经添加的数据集合,通过<foreach>遍历添加,

mapper.xml代码 

<foreach> 这里集合数据不应超过500,300即可,如果集合过大<foreach>添加效率反而降低;
	<insert id="batchSave" parameterType="java.util.List">
		INSERT INTO w_href
		(name, csdnHref, createDate, type, status)
		VALUES
		<foreach collection="list" item="item" index="index" separator=",">
			(
			#{item.name},
			#{item.csdnHref},
			#{item.createDate},
			#{item.type},
			#{item.status}
			)
		</foreach>
	</insert>



	<!-- 查询all -->
	<select id="selectAll"  resultType="HrefUrlEntity">
		select * from w_href a WHERE a.id &lt; 301
	</select>

dao层

public void batchSave(@Param("list") List<HrefUrlEntity> list);


public List<HrefUrlEntity> selectAll();

service层

    public void batchSave(List<HrefUrlEntity> hrefUrlEntities){
		hrefUrlDao.batchSave(hrefUrlEntities);
	}



	public List<HrefUrlEntity> selectAll(){
		return hrefUrlDao.selectAll();
	}

 

Controller层,先查询到已经添加的数据,通过for循环遍历,将查询的数据再次添加,依次循环,短时间内可以添加上百万数据

	@Test
	public void getFi() throws ParseException {
		for (int i = 0;i<2000;i++) {
			List<HrefUrlEntity> hrefUrlEntities =hrefUrlService.selectAll();
			hrefUrlService.batchSave(hrefUrlEntities);
		} 
	}

 

 

 

 

 

 

 

 

 

 

 

posted @ 2021-03-06 08:46  My--style  阅读(159)  评论(0)    收藏  举报