天天看點

TDengine實作多表批量插入

TDengine實作多表批量插入

有問題歡迎一起讨論

Mapper類

@Mapper
public interface WavePixelMapper {
int addSpo2MapBatch(@Param("spo2List") List<WavePixelDataDo> spo2List,
                        @Param("respList") List<WavePixelDataDo> respList,
                        @Param("co2pList") List<WavePixelDataDo> co2pList,
                        @Param("ecgList") List<WavePixelDataDo> ecgList);
                        }
           

xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.wisonic.monitor.infrastructure.mapper.WavePixelMapper">

	<insert id="addSpo2MapBatch" parameterType="java.util.List">
      insert into
        k1506010900000001_spo2 (ts,pixel) values
             <foreach separator=" " collection="spo2List" item="wavePixelDataDo" >
                ('${wavePixelDataDo.ts}','${wavePixelDataDo.pixel}')
             </foreach>
        k1506010900000001_resp (ts,pixel) values
            <foreach separator=" " collection="respList" item="wavePixelDataDo" >
                ('${wavePixelDataDo.ts}','${wavePixelDataDo.pixel}')
            </foreach>
        k1506010900000001_co2(ts,pixel) values
            <foreach separator=" " collection="co2pList" item="wavePixelDataDo" >
                ('${wavePixelDataDo.ts}','${wavePixelDataDo.pixel}')
            </foreach>
        k1506010900000001_ecg(ts,pixel) values
            <foreach separator=" " collection="ecgList" item="wavePixelDataDo" >
                ('${wavePixelDataDo.ts}','${wavePixelDataDo.pixel}')
            </foreach>
    </insert>
    
</mapper>
           

編寫測試接口

@Slf4j
@Controller
public class TestController {
    @Autowired
    private WavePixelMapper wavePixelMapper;
    @ResponseBody
    @RequestMapping("test2")
    public String batchInsertPixelTest(){
        List<WavePixelDataDo> wavePixelDataDos = new ArrayList<>();
        long start = System.currentTimeMillis();
        for (int i = 0; i < 65; i++) {
            WavePixelData wavePixelData = new WavePixelData(30, 15);
            wavePixelDataDos.add(new WavePixelDataDo(new Timestamp(System.currentTimeMillis()+i), JSONObject.toJSONString(wavePixelData)));
        }
        wavePixelMapper.addSpo2MapBatch(wavePixelDataDos,wavePixelDataDos,wavePixelDataDos,wavePixelDataDos);
        byte[] bytes = wavePixelDataDos.get(0).getPixel().getBytes();
        log.info(String.valueOf(bytes.length));
        long end = System.currentTimeMillis();
        log.info(end-start+"毫秒");

        return end-start+"毫秒"+"-----"+String.valueOf(bytes.length);
    }
}
           

測試結果:

TDengine實作多表批量插入