入参为json,然后根据需要对表进行操作:
1、实体:
1、表实体:
package com.example.springbootmybatisplus.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
@Data
@TableName(value = "tb_devicestatus")
@ApiModel(value = "设备定位信息")
public class TbDevicestatus implements Serializable {
/**
* 设备号
*/
@TableId(value = "devicenumber", type = IdType.AUTO)
@ApiModelProperty(value = "设备号")
private String devicenumber;
/**
* 点源
*/
@TableField(value = "pointsource")
@ApiModelProperty(value = "点源")
private Short pointSource;
/**
* 设备状态:0 未启用;1 离线;2 静止;3 行驶中
*/
@TableField(value = "devicestate")
@ApiModelProperty(value = "设备状态:0 未启用;1 离线;2 静止;3 行驶中")
private Short deviceState;
/**
* 定位方式:0 GPS;1 基站;2 WiFi;3 北斗;4 GPS/北斗混合
*/
@TableField(value = "locationtype")
@ApiModelProperty(value = "定位方式:0 GPS;1 基站;2 WiFi;3 北斗;4 GPS/北斗混合")
private Short locationType;
/**
* 原始纬度
*/
@TableField(value = "devicelat")
@ApiModelProperty(value = "原始纬度")
private BigDecimal deviceLat;
/**
* 原始经度
*/
@TableField(value = "devicelng")
@ApiModelProperty(value = "原始经度")
private BigDecimal deviceLng;
/**
* 当前电量
*/
@TableField(value = "batterypct")
@ApiModelProperty(value = "当前电量")
private BigDecimal batteryPct;
/**
* 定位时间
*/
@JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat
@TableField(value = "locationtime")
@ApiModelProperty(value = "定位时间")
private Date locationTime;
/**
* 通讯时间
*/
@JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat
@TableField(value = "lasttime")
@ApiModelProperty(value = "通讯时间")
private Date lastTime;
/**
* 速度(km/h)
*/
@TableField(value = "speed")
@ApiModelProperty(value = "速度(km/h)")
private BigDecimal speed;
/**
* 速度(km/h)
*/
@TableField(value = "nowstatelocation")
@ApiModelProperty(value = "当前状态定位时间")
private Date nowStateLocation;
/**
* 设备的最新一次离线时间
*/
@TableField(value = "lastoffelinetime")
@ApiModelProperty(value = "设备的最新一次离线时间")
private Date lastOffelineTime;
/**
* 备注json
*/
@TableField(value = "jsonstring")
private String jsonString;
/**
* 创建时间
*/
@TableField(value = "createdat")
@ApiModelProperty(value = "创建时间")
private Date createdAt;
/**
* 创建操作人
*/
@TableField(value = "createdbyid")
@ApiModelProperty(value = "创建操作人")
private String createdById;
/**
* 更新时间
*/
@TableField(value = "updatedat")
@ApiModelProperty(value = "更新时间")
private Date updatedAt;
/**
* 更新操作人
*/
@TableField(value = "updatedbyid")
@ApiModelProperty(value = "更新操作人")
private String updatedById;
/**
* 删除时间
*/
@TableField(value = "deletedat")
@ApiModelProperty(value = "删除时间")
private Date deletedAt;
/**
* 删除操作人
*/
@TableField(value = "deletedbyid")
@ApiModelProperty(value = "删除操作人")
private String deletedById;
/**
* 是否删除(f否t是)
*/
@TableField(value = "deleted")
private Boolean deleted;
}
2、接收json的实体:
package com.example.springbootmybatisplus.dto;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
@Data
public class DeviceStatusDto {
private String devicenumber;
private Short pointSource;
private Short deviceState;
private Short locationType;
private BigDecimal deviceLat;
private BigDecimal deviceLng;
private BigDecimal batteryPct;
private Date locationTime;
private Date lastTime;
private BigDecimal speed;
private Date nowStateLocation;
private Date lastOffelineTime;
private String jsonString;
private Date createdAt;
private String createdById;
private Date updatedAt;
private String updatedById;
private Date deletedAt;
private String deletedById;
private Boolean deleted;
}
3、Mapper:
package com.example.springbootmybatisplus.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.springbootmybatisplus.dto.DeviceStatusDto;
import com.example.springbootmybatisplus.entity.TbDevicestatus;
import org.apache.ibatis.annotations.*;
@Mapper
public interface TbDevicestatusMapper extends BaseMapper<TbDevicestatus> {
@Select("select 1 from tb_devicestatus where devicenumber = #{devicenumber} and pointsource=#{pointsource}")
Integer getDeviceStatusByDevicenumber(@Param("devicenumber") String deviceNumber, @Param("pointsource") short pointsource);
@Delete("DELETE FROM tb_devicestatus WHERE devicenumber = #{devicenumber} and pointsource=#{pointsource}")
int deleteDeviceStateList(@Param("devicenumber") String deviceNumber, @Param("pointsource") short pointsource);
}
package com.example.springbootmybatisplus.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.springbootmybatisplus.dto.DeviceStatusDto;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface ObjectMapper extends BaseMapper<DeviceStatusDto> {
}
4、Service:
package com.example.springbootmybatisplus.service;
import com.alibaba.fastjson.JSON;
import com.example.springbootmybatisplus.dto.DeviceStatusDto;
import com.example.springbootmybatisplus.entity.TbDevicestatus;
import com.example.springbootmybatisplus.mapper.TbDevicestatusMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Objects;
@Service
public class TbDevicestatusService {
private static final Logger log = LoggerFactory.getLogger(TbDevicestatusService.class);
@Autowired
private TbDevicestatusMapper tbDevicestatusMapper;
public void addDeviceStatus(String msg) {
try {
/**
* 接收入参json导新实体中
* */
DeviceStatusDto deviceStatusDto = JSON.parseObject(msg, DeviceStatusDto.class);
/**
* 判断接收的实体是否为空
*/
if (Objects.isNull(deviceStatusDto)) {
log.info("设备定位信息接收为空");
return;
}
/**
* 实体中的数据在表中是否存在,存在根据函数输出1,不存在输出null
*/
Integer existCount = tbDevicestatusMapper.getDeviceStatusByDevicenumber(deviceStatusDto.getDevicenumber(), deviceStatusDto.getPointSource());
/**
* 若数据已在表中存在,则删掉
*/
if (existCount!=null && existCount > 0) {
tbDevicestatusMapper.deleteDeviceStateList(deviceStatusDto.getDevicenumber(), deviceStatusDto.getPointSource());
log.info("设备已存在,已删除:{}", deviceStatusDto.getDevicenumber());
}
/**
* 根据需要将实体中数据写进新的参数中,并写进表实体中
*/
TbDevicestatus tbDevicestatus = insertIntoTbDevicestatus(deviceStatusDto);
/**
* 将实体中的数据写入表中
*/
tbDevicestatusMapper.insert(tbDevicestatus);
log.info("设备数据已插入:{}", deviceStatusDto.getDevicenumber());
} catch (Exception e) {
log.error("异常信息:" + e.getMessage());
}
}
public TbDevicestatus insertIntoTbDevicestatus(DeviceStatusDto deviceStatusDto) {
TbDevicestatus aa = new TbDevicestatus();
aa.setDevicenumber(deviceStatusDto.getDevicenumber());
aa.setDeviceState(deviceStatusDto.getDeviceState());
aa.setDeviceLng(deviceStatusDto.getDeviceLng());
aa.setDeviceLat(deviceStatusDto.getDeviceLat());
aa.setLocationType(deviceStatusDto.getLocationType());
aa.setBatteryPct(deviceStatusDto.getBatteryPct());
aa.setLocationTime(deviceStatusDto.getLocationTime());
aa.setLastTime(deviceStatusDto.getLastTime());
aa.setPointSource(deviceStatusDto.getPointSource());
aa.setSpeed(deviceStatusDto.getSpeed());
aa.setNowStateLocation(deviceStatusDto.getNowStateLocation());
aa.setLastOffelineTime(deviceStatusDto.getLastOffelineTime());
return aa;
}
}
5、Controller:
package com.example.springbootmybatisplus.contronller;
import com.example.springbootmybatisplus.service.TbDevicestatusService;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/device-status")
@Api(tags = "DeviceStatusController")
public class TbDeviceStatusController {
@Autowired
private TbDevicestatusService tbDevicestatusService;
@PostMapping("/insert1")
public ResponseEntity<String> insert1(@RequestBody String msg) {
try {
tbDevicestatusService.addDeviceStatus(msg);
return ResponseEntity.status(HttpStatus.CREATED).body("1111");
}catch (Exception e){
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("2222");
}
}
}
另一种写法:
Mapper:
package com.example.springbootmybatisplus.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.springbootmybatisplus.entity.TbDevicestatus;
import org.apache.ibatis.annotations.*;
@Mapper
public interface TbDevicestatusMapper extends BaseMapper<TbDevicestatus> {
@Select("select 1 from tb_devicestatus where devicenumber = #{devicenumber} and pointsource=#{pointsource}")
Integer getDeviceStatusByDevicenumber(@Param("devicenumber") String deviceNumber, @Param("pointsource") short pointsource);
}
Service:
package com.example.springbootmybatisplus.service;
import com.alibaba.fastjson.JSON;
import com.example.springbootmybatisplus.dto.DeviceStatusDto;
import com.example.springbootmybatisplus.entity.TbDevicestatus;
import com.example.springbootmybatisplus.mapper.TbDevicestatusMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Objects;
@Service
public class TbDevicestatusService {
private static final Logger log = LoggerFactory.getLogger(TbDevicestatusService.class);
@Autowired
private TbDevicestatusMapper tbDevicestatusMapper;
public void addDeviceStatus(String msg) {
try {
DeviceStatusDto deviceStatusDto = JSON.parseObject(msg, DeviceStatusDto.class);
if (Objects.isNull(deviceStatusDto)) {
log.info("设备定位信息接收为空");
return;
}
Integer existCount = tbDevicestatusMapper.getDeviceStatusByDevicenumber(deviceStatusDto.getDevicenumber(), deviceStatusDto.getPointSource());
if (existCount != null && existCount > 0) {
TbDevicestatus tbDevicestatus=deleteTbDevicestatus(deviceStatusDto);
tbDevicestatusMapper.deleteById(tbDevicestatus);
log.info("设备已存在,已删除:{}", deviceStatusDto.getDevicenumber());
}
TbDevicestatus tbDevicestatus = insertIntoTbDevicestatus(deviceStatusDto);
tbDevicestatusMapper.insert(tbDevicestatus);
log.info("设备数据已插入:{}", deviceStatusDto.getDevicenumber());
} catch (Exception e) {
log.error("异常信息:" + e.getMessage());
}
}
public TbDevicestatus insertIntoTbDevicestatus(DeviceStatusDto deviceStatusDto) {
TbDevicestatus aa = new TbDevicestatus();
aa.setDevicenumber(deviceStatusDto.getDevicenumber());
aa.setDeviceState(deviceStatusDto.getDeviceState());
aa.setDeviceLng(deviceStatusDto.getDeviceLng());
aa.setDeviceLat(deviceStatusDto.getDeviceLat());
aa.setLocationType(deviceStatusDto.getLocationType());
aa.setBatteryPct(deviceStatusDto.getBatteryPct());
aa.setLocationTime(deviceStatusDto.getLocationTime());
aa.setLastTime(deviceStatusDto.getLastTime());
aa.setPointSource(deviceStatusDto.getPointSource());
aa.setSpeed(deviceStatusDto.getSpeed());
aa.setNowStateLocation(deviceStatusDto.getNowStateLocation());
aa.setLastOffelineTime(deviceStatusDto.getLastOffelineTime());
return aa;
}
public TbDevicestatus deleteTbDevicestatus(DeviceStatusDto deviceStatusDto){
TbDevicestatus bb=new TbDevicestatus();
bb.setDevicenumber(deviceStatusDto.getDevicenumber());
bb.setPointSource(deviceStatusDto.getPointSource());
return bb;
}
}
6、调用接口打印的日志:
7、update相关操作:
Mapper:
package com.example.springbootmybatisplus.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.springbootmybatisplus.entity.TbDevicestatus;
import org.apache.ibatis.annotations.*;
@Mapper
public interface TbDevicestatusMapper extends BaseMapper<TbDevicestatus> {
}
Controller:
package com.example.springbootmybatisplus.service;
import com.alibaba.fastjson.JSON;
import com.example.springbootmybatisplus.dto.DeviceStatusDto;
import com.example.springbootmybatisplus.entity.TbDevicestatus;
import com.example.springbootmybatisplus.mapper.TbDevicestatusMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.Objects;
@Service
public class TbDevicestatusService {
private static final Logger log = LoggerFactory.getLogger(TbDevicestatusService.class);
@Autowired
private TbDevicestatusMapper tbDevicestatusMapper;
public void addDeviceStatus(String msg) {
try {
DeviceStatusDto deviceStatusDto = JSON.parseObject(msg, DeviceStatusDto.class);
if (Objects.isNull(deviceStatusDto)) {
log.info("设备定位信息接收为空");
return;
}
Integer existCount = tbDevicestatusMapper.getDeviceStatusByDevicenumber(deviceStatusDto.getDevicenumber(), deviceStatusDto.getPointSource());
if (existCount != null && existCount > 0) {
TbDevicestatus tbDevicestatus=updateTbDevicestatus(deviceStatusDto);
tbDevicestatusMapper.updateById(tbDevicestatus);
log.info("设备:{}", deviceStatusDto.getDevicenumber()+"的updateat时间已更新成"+new Date());
}
} catch (Exception e) {
log.error("异常信息:" + e.getMessage());
}
}
public TbDevicestatus updateTbDevicestatus(DeviceStatusDto deviceStatusDto){
TbDevicestatus cc=new TbDevicestatus();
cc.setDevicenumber(deviceStatusDto.getDevicenumber());
cc.setPointSource(deviceStatusDto.getPointSource());
cc.setUpdatedAt(new Date());
return cc;
}
}