我想创建一个新客户并在创建客户后返回客户编号。客户编号必须是从50000开始的自动递增的唯一编号。
到目前为止,我已经成功创建了一个客户,但是我不确定应该如何生成客户编号,将其保存到数据库中,并在触发POST时将其作为成功消息显示给用户。
json下面是所需的响应;
{
"customerNumber": "50002",
"statusMessage": "Customer Created Successfully",
}
以及来自控制器和服务的以下代码段;
UserService.java
public void createUser(User user) {
if (user == null || user.getId() == null) {
throw new ResourceNotFoundException("Empty", "Missing Data Exception");
} else {
userRepository.save(user);
}
}
RegistrationController.java
@RequestMapping(method = RequestMethod.POST, value = "/users")
public void createUser(@RequestBody User user) {
userService.createUser(user);
}
java大神给出的解决方案
用createUser
注释包含@RestController
的类,或直接在@ResponseBody
方法上添加createUser
,并将其返回类型更改为Response
;
@RestController
class Controller {
@RequestMapping(method = RequestMethod.POST, value = "/users")
public Response createUser(@RequestBody User user) {
return userService.createUser(user);
}
}
假设您在createUser
中的UserService
方法将返回Response
;
public Response createUser(User user) {
if (user == null || user.getId() == null) {
throw new ResourceNotFoundException("Empty", "Missing Data Exception");
} else {
User user = userRepository.save(user);
return new Response(user.getId);
}
}
由于fooRepository.save()
始终返回成功保存的实体,只要它是save
中的本机CrudRepository
方法即可。
id
字段将出现在User
所得的save
实体内部,以返回所需的响应类型,您需要创建这样的类并传输上述的id
;
class Response {
private String customerNumber;
private String statusMessage;
public Response(String id) {
this.customerNumber = id;
this.statusMessage = "Customer Created Successfully";
}
// getters, setters, etc
}
java:继承 - java有哪些替代继承的方法? java大神给出的解决方案 有效的Java:偏重于继承而不是继承。 (这实际上也来自“四人帮”)。他提出的理由是,如果扩展类未明确设计为继承,则继承会引起很多不正常的副作用。例如,对super.someMethod()的任何调用都可以引导您通过未知代码的意外路径。取而代之的是,持有对本来应该扩展的类的引用,然后委托给它。这是与Eric…
在Spring Kafka中,我需要在应用程序中添加@EnableKafka批注吗? - java我看到有人在他们的Spring Boot应用程序中添加@EnableKafka,我想知道为什么。我有一个工作的春季靴kafka生产者和使用者,并且没有使用@EnableKafka。那么,为什么人们需要显式添加它?谢谢。 java大神给出的解决方案 这是因为Spring Boot通过KafkaAutoConfiguration类(javadoc)为Kafka提…
使用Spring的HandlerInterceptor发送错误导致406(不可接受)响应 - java我正在尝试使用Spring的HandlerInterceptorAdapter处理为以下其余端点计划维护的应用程序:因此,我通过扩展/api/authentication创建了一个拦截器:public class MigrationStateInterceptor extends HandlerInterceptorAdapter { @Override p…
如何在Java中以语言环境正确的顺序格式化日期和月份? - java有没有一种方法可以用Java / Kotlin中的区域设置正确的格式格式化日和月(以紧凑格式)而不格式化年份?因此,对于英语,应为“ 9月20日”,而对于瑞典语为“ 9月20日”。为了进行比较,在Cocoa平台上,我可以执行以下操作(在Swift中):let formatter = DateFormatter() formatter.locale = Loc…
如何在JAVA中传递以逗号分隔的值作为函数参数的字符串 - java我有一个可以接受任何数量的INTEGER参数的方法:pages(int,int...)此方法是选择PDF文件的某些页面。以以下字符串类型存储的书页:String pages = "1,2,3,6,9"; 我想将此字符串作为方法的参数看起来像:pages(1,2,3,6,9); java大神给出的解决方案 使用流可以很容易地做到这一点:St…