如何使用POST方法API将数据推送到数据库并获取唯一ID作为响应

时间:2018-05-30 11:59:22

标签: java mysql rest spring-boot

我有一个DeviceController类:

@RequestMapping(value = "/device", method = RequestMethod.POST,produces = "application/json")
public ResponseEntity<Device> createDevice(@RequestBody Device device) {

    HttpHeaders headers = new HttpHeaders();
    if (device == null) {
        return new ResponseEntity<Device>(HttpStatus.BAD_REQUEST);
    }
    deviceRegisterService.createDevice(device)
    headers.add("Device Created  - ", String.valueOf(device.getDeviceId())); 
    return new ResponseEntity<Device>(device,headers,HttpStatus.CREATED);
}

我想将设备信息发布到设备表(SQL数据库)并返回一个响应,即带有请求数据的唯一键。

这是我的查询数据库的存储库类:

@Repository
public class DeviceRepository {
    private JdbcTemplate jdbcTemplate;

    @Autowired
    public void setDataSource(DataSource dataSource) {
        this.jdbcTemplate = new JdbcTemplate(dataSource);
    }

    public int createDevice(Device device){
        int count = jdbcTemplate.update("INSERT into Device_Table(device_name,device_type Values(?,?,?)",new Object{device.getdevice_name,device.getdevice_type,device.getDevice_id});
        return count;
    }
}

点击服务器后,我可以推送数据,但我得到的唯一ID与数据库中生成的唯一ID完全不同。

我有一个Device.java类,它包含生成唯一ID的所有getter / setter方法和方法。 我正在使用UUID.randomUUID()。toString()来生成唯一ID。

例如:

Request
{
    device_name="asd"
    device_type="xyz"
}

Response
{
    device_name="asd"
    device_type="xyz"
    device_id="1223444455"
}

Database:
    device_name : asd
    device_type : xyz
    device_id   : "00999123"

我认为我的代码以某种方式执行getDeviceID()方法两次。有人可以帮我纠正它。

0 个答案:

没有答案