Mybaties批量插入

Mybaties 批量插入有两种方式
1.用Java代码循环遍历集合,调取数据库

Mapper

	// 添加温度值
	public void addTemperature(Temperature temperature );

具体写法如下:

 	List<Temperature> list=new ArrayList<Temperature>();
 	Temperature temperature=	temperature=new Temperature();
    for(int i=0;i<list.size();i++) {
		    	     temperatureDataStorageMapper.addTemperature(list.get(i));    
		       }

这种方法sql语句无需做改动,正常插入语句即可。

2.用SQL语句循环遍历集合,分批次插入

Mapper

	// 添加温度值
	public void addTemperature(List<Temperature> list);

这种方法SQL语句需要做一些改变

Mapper.xml

    <insert id="addTemperature" parameterType="java.util.List">
   insert into 
      nl_temperature(equipment_num,acquisition_time,temperature,public_id) values
        <foreach collection="list" separator="," index="index" item="i">
            (
            #{i.equipmentNum},
            #{i.acquisitionTime},
            #{i.temperature},
            #{i.publicId}
            )
        </foreach>
    </insert> 

具体方法如下:

//循环入库
			   int n = 0;
		       int m = 0;
		       List<Temperature> list=new ArrayList<Temperature>();
 	           Temperature temperature=	temperature=new Temperature();
 	           //重新new 一个集合,一次性往集合里放4000条,4000这个数可调整,容易长度太长。
		       List<Temperature> newList = new ArrayList<>();
		       while(n<list.size()){
		        for(int h=m;h<m+4000;h++){
		        	if(h<list.size()) {
		        		newList.add(list.get(h));
		        	}
		        }
		      //调用批量插入
		        temperatureDataStorageMapper.addTemperature(newList); 
		        newList.clear();
		        n+=4000;
		        m+=4000;
		       }
发布了14 篇原创文章 · 获赞 2 · 访问量 298

猜你喜欢

转载自blog.csdn.net/qq_43745587/article/details/104010073