引言
Maven:Apache Maven 3.6.3 Spring Boot:2.7.18 MyBatis Plus:com.baomidou:mybatis-plus-boot-starter:3.5.5
com.baomidou mybatis-plus-boot-starter 3.5.5
#KaiwuDB JDBC 安装命令,其中 -Dfile 参数为安装包路径 $ mvn install:install-file "-Dfile=../kaiwudb-jdbc-2.0.4.jar" "-DgroupId=com.kaiwudb" "-DartifactId=kaiwudb-jdbc" "-Dversion=2.0.4" "-Dpackaging=jar"
XMLcom.kaiwudb kaiwudb-jdbc 2.0.4
spring: datasource: url: jdbc:kaiwudb://127.0.0.1:26257/kwdb_app # URL 链接地址 username: test # 用户名 password: Password@2024 # 密码 driver-class-name: com.kaiwudb.Driver # 驱动名
mybatis-plus: configuration: map-underscore-to-camel-case: true # 开启驼峰命名自动映射 log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 开启日志打印 type-aliases-package: com.kaiwudb.app.entity # 对应实体类路径 mapper-locations: classpath:mapper/*.xml # 对应 mapper 映射 xml 文件
create database kwdb_app;
CREATE TABLE IF NOT EXISTS kwdb_app.sensor_data ( id SERIAL PRIMARY KEY, sensor_id VARCHAR(20) NOT NULL, temperature DOUBLE, humidity DOUBLE, pressure DOUBLE, distance INT, description VARCHAR(255), is_active BOOLEAN DEFAULT true, raw_data BYTEA, record_time TIMESTAMP DEFAULT NOW(), del_flag CHAR(1) );
package com.kaiwudb.app.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.time.LocalDateTime;
@Data
@TableName("sensor_data")
public class SensorData {
private Long id; // 主键,自动增长的唯一标识符
@TableField("sensor_id")
private String sensorId; // 传感器的唯一标识符
private Double temperature; // 传感器读取的温度数据
private Double humidity; // 传感器读取的湿度数据
private Double pressure; // 传感器读取的压力数据
private Integer distance; // 传感器距离
private String description; // 传感器的详细描述信息
@TableField("is_active")
private Boolean active; // 表示传感器是否处于活动状态
@TableField("raw_data")
private byte[] rawData; // 存储传感器数据的原始字节
@TableField("record_time")
private LocalDateTime recordTime; // 记录数据插入的时间戳
@TableField("del_flag")
private String delFlag; // 传感器是否删除标志位,0-未删除,1-已删除
}package com.kaiwudb.app.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.kaiwudb.app.entity.SensorData; import org.apache.ibatis.annotations.Mapper; import org.springframework.stereotype.Repository; @Mapper @Repository public interface SensorDataMapper extends BaseMapper{ // 自定义 SQL 方法 }
ListselectListBetweenTime( @Param("beginTime") LocalDateTime beginTime, @Param("endTime") LocalDateTime endTime);
package com.kaiwudb.app.service;
import com.kaiwudb.app.entity.SensorData;
import java.util.List;
public interface SensorDataService {
int insertSensorData(SensorData data);
int updateSensorData(SensorData data);
int deleteById(Long id);
SensorData findById(Long id);
List findBySensorId(String sensorId);
List findByRecordTime(String beginTime, String endTime);
List findAll();
} import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.kaiwudb.app.entity.SensorData;
import com.kaiwudb.app.mapper.SensorDataMapper;
import com.kaiwudb.app.service.SensorDataService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.List;
@Service
public class SensorDataServiceImpl implements SensorDataService {
@Autowired
private SensorDataMapper sensorDataMapper;
@Override
public int insertSensorData(SensorData data) {
return sensorDataMapper.insert(data);
}
@Override
public int updateSensorData(SensorData data) {
return sensorDataMapper.updateById(data);
}
@Override
public int deleteById(Long id) {
return sensorDataMapper.deleteById(id);
}
@Override
public SensorData findById(Long id) {
return sensorDataMapper.selectById(id);
}
@Override
public List findBySensorId(String sensorId) {
return sensorDataMapper.selectList(new QueryWrapper().eq("sensor_id", sensorId));
}
@Override
public List findByRecordTime(String beginTime, String endTime) {
LocalDateTime beginDateTime = LocalDateTime.parse(beginTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"));
LocalDateTime endDateTime = LocalDateTime.parse(endTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"));
return sensorDataMapper.selectListBetweenTime(beginDateTime, endDateTime);
}
@Override
public List findAll() {
return sensorDataMapper.selectList(null);
}
} package com.kaiwudb.app.controller;
import com.kaiwudb.app.entity.SensorData;
import com.kaiwudb.app.service.SensorDataService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@RequestMapping("/sensor-data")
public class SensorDataController {
@Autowired
private SensorDataService sensorDataService;
@PostMapping("/add")
public int addSensorData(@RequestBody SensorData data) {
return sensorDataService.insertSensorData(data);
}
@PutMapping("/update")
public int updateSensorData(@RequestBody SensorData data) {
return sensorDataService.updateSensorData(data);
}
@DeleteMapping("/{id}")
public int deleteSensorDataById(@PathVariable Long id) {
return sensorDataService.deleteById(id);
}
@GetMapping("/{id}")
public SensorData getSensorDataById(@PathVariable Long id) {
return sensorDataService.findById(id);
}
@GetMapping("/by-sensor-id/{sensorId}")
public List getSensorDataBySensorId(@PathVariable String sensorId) {
return sensorDataService.findBySensorId(sensorId);
}
@GetMapping("/by-timestamp")
public List getSensorDataByRecordTime(
@RequestParam("beginTime") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss.SSS") String beginTime,
@RequestParam("endTime") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss.SSS") String endTime) {
return sensorDataService.findByRecordTime(beginTime, endTime);
}
@GetMapping("/all")
public List getAllSensorData() {
return sensorDataService.findAll();
}
} package com.kaiwudb.app;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication(scanBasePackages = "com.kaiwudb.app")
public class KaiwudbAppApplication {
public static void main(String[] args) {
SpringApplication.run(KaiwudbAppApplication.class, args);
}
}


















