通过Mybatis实现iotdb数据库的连接遇到的问题以及解决方法_mismatched input ‘eof

delete from root.XXX.XXX.demo20130424\_4.\* where time > XXXXXX

最后总算成功通过mybatis实现了自己想要的功能,不过还是有很多不足,还希望有兴趣的同学一起研究。

接下来上代码:

实现过程:


1.主要依赖:
<dependency>
    <groupId>org.apache.iotdb</groupId>
    <artifactId>iotdb-jdbc</artifactId>
    <version>0.13.0</version>
</dependency>
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.2.0</version>
</dependency>
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.1.21</version>
</dependency>
2.数据库配置
spring:
  datasource:
    username: root
    password: *******
    driver-class-name: org.apache.iotdb.jdbc.IoTDBDriver
    url: jdbc:iotdb://localhost:6667/
    druid:
      validation-query: select * from *****
    initial-size: 5
    min-idle: 10
    max-active: 50
    max-wait: 60000
    remove-abandoned: true
    remove-abandoned-timeout: 30
    time-between-eviction-runs-millis: 60000
    min-evictable-idle-time-millis: 300000
    test-while-idle: false
    test-on-borrow: false
    test-on-return: false

mybatis:
  mapper-locations: classpath:/mapper/*.xml

#输出sql日志
logging:
  level:
    com.zssy.iotdb.mapper.IotdbMapper: debug
3.controller,测试用没有入参,实际情况可以自己加
import com.***.iotdb.dao.DeviceDao;
import com.***.iotdb.dao.SaveIotParam;
import com.***.iotdb.dao.SearchIotParam;
import com.***.iotdb.service.IotdbService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @author xp
 * @ClassName iotdbDemoController
 * @Description TODO
 * @date 2023/04/24 9:06
 */
@Slf4j
@RestController
@RequestMapping("/iotdbjdbcdemo")
@RequiredArgsConstructor
public class IotdbDemoController {

    @Autowired
    private IotdbService service;
 /** * 新增 * @param data * @return * @throws Exception */
    @PostMapping("/insert")
    public String insert() throws Exception {
        service.insert(data);
        return "SUCCESS";
    }

 /** * 删除 * @param data * @throws Exception */
    @PostMapping("/delete")
    public void delete() throws Exception {
        service.deleteByParam();
    }

 /** * 查询 * @param data * @return * @throws Exception */
    @GetMapping("/queryOrder")
    public List<DeviceDao> queryOrder() throws Exception {
        try {
            List<DeviceDao> v = service.queryOrder();
            return v;
        } catch (Exception e) {
            log.info("查询失败!" + e);
            return null;
        }
    }
}
4.service

4.1接口

/**
 * @author xp
 * @ClassName IotdbService
 * @Description TODO
 * @date 2023/04/24 9:26
 */
import com.***.iotdb.dao.DeviceDao;
import com.***.iotdb.dao.SaveIotParam;
import com.***.iotdb.dao.SearchIotParam;

import java.util.*;
public interface IotdbService {

    public void insert();

    public void deleteByParam();

    List<DeviceDao> queryOrder();
}

4.2实现类

/**
 * @author xp
 * @ClassName IotdbService
 * @Description TODO
 * @date 2023/04/24 9:26
 */

import com.***.iotdb.dao.DeviceDao;
import com.***.iotdb.dao.SaveIotParam;
import com.***.iotdb.dao.SearchIotParam;
import com.***.iotdb.mapper.IotdbMapper;
import com.***.iotdb.service.IotdbService;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.*;
import java.util.stream.Collectors;
@Service
@RequiredArgsConstructor
public class IotdbServiceImpl implements IotdbService {

    @Autowired
    private IotdbMapper mapper;

    @Override
    public void insert() {
        mapper.insert();
    }

    @Override
    public void deleteByParam() {
        mapper.deleteByParam();
    }

    @Override
    public List<DeviceDao> queryOrder(){
        final List<Map<String, Object>> mapList = mapper.queryOrder();
        final List<DeviceDao> result = mapList.stream().map(s -> {
            final DeviceDao deviceDao = new DeviceDao();
            deviceDao.setTime((Date) s.get("Time"));
            deviceDao.setMeasurementTemperature(s.get("temperature").toString());
            deviceDao.setMeasurementWeight(s.get("weight").toString());
            deviceDao.setMeasurementFlow(s.get("flow").toString());
            deviceDao.setMeasurementNumber(s.get("Number").toString());
            return deviceDao;
        }).collect(Collectors.toList());
        return result;
    }
}
5.mapper
import com.***.iotdb.dao.DeviceDao;
import com.***.iotdb.dao.SaveIotParam;
import com.***.iotdb.dao.SearchIotParam;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @author xp
 * @InterfaceName IotdbMapper
 * @Description TODO
 * @date 2023/04/24 14:29
 */
public interface IotdbMapper {
    void insert();

    void deleteByParam();

    List<Map<String, Object>> queryOrder();

}
6.mapper.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.***.***.mapper.IotdbMapper">

    <resultMap id="BaseResult" type="com.***.***.dao.DeviceDao">
        <collection property="measurementNumber" column="Number" javaType="INTEGER"/>
        <collection property="measurementWeight" column="weight" javaType="DOUBLE"/>
        <collection property="measurementTemperature" column="temperature" javaType="DOUBLE"/>
        <collection property="measurementFlow" column="flow" javaType="DOUBLE"/>
        <collection property="time" column="Time" javaType="DATE"/>
    </resultMap>
<!--    resultMap没有走通,请大神指导-->
    <insert id="insert">
            insert into root.***.***.demo20130424_1 (timestamp, Number, weight, temperature,flow)
            values(2023-04-25T18:28:20.689+08:00,9,7.77,37.99,2.66);
    </insert>
    <delete id="deleteByParam">
        delete from root.***.***.demo20130424_1.* where time &gt; 1682317200000
    </delete>
   
    <select id="queryOrder" resultType="java.util.Map">
        select Number as Number,temperature as temperature,weight as weight,flow as flow from root.zssy.zkj.demo20130424_1 limit 1 offset 0
    </select>
</mapper>
7.记得启动类哦
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;

/**
 * @author xp
 * @ClassName IotdbApplication
 * @Description TODO
 * @date 2023/04/24 8:53
 */
@SpringBootApplication
@MapperScan("com.***.iotdb.mapper")
public class IotdbApplication {
    public static void main(String[] args) {
        SpringApplication.run(IotdbApplication.class, args);
        System.out.println("iotdb Demo程序启动成功!");
## 最后

**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**

**深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。**

**因此收集整理了一份《2024年嵌入式&物联网开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**

![img](https://img-blog.csdnimg.cn/img_convert/70553ad1a4547f7b35f7fc8a11331b16.png)

![img](https://img-blog.csdnimg.cn/img_convert/4e0401c2a60d17265c5ce6738f4ba98d.jpeg)

![img](https://img-blog.csdnimg.cn/img_convert/a9e2c920e83edb00fb011ef33d2f04d1.png)

 ![img](https://img-blog.csdnimg.cn/img_convert/dcdf5bb868ee6bfa54c5a244ff8d8d2f.png)

![img](https://img-blog.csdnimg.cn/img_convert/d7c34c76000396094ccb912b9c39089d.png)

![img](https://img-blog.csdnimg.cn/img_convert/f1c1a2942f3c1c358c21ff6ea202c28c.png)

![](https://img-blog.csdnimg.cn/img_convert/4b38ff07ea881be84a25878d5a4d1b8e.png)

 

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!**

[**如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618654289)

**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**!!


中...(img-1HCksqKG-1715841000989)]

[外链图片转存中...(img-jcScrgnD-1715841000989)]

 

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!**

[**如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618654289)

**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**!!


  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值