如何解决MySQL不显示数据库内的用户,即使它们存在
我对MySql有一个奇怪的问题。我用Spring-Boot MySql做了一个小项目,但是当我尝试向数据库中添加一个新用户时,它会给我成功消息,但随后在mysql shell上查看,即使有数据库也没有任何显示(因为有了Get它实际上会找到插入的用户)。现在我不明白问题是什么。我附上了应用程序。我的Spring项目的属性。
每次我要求获取它时,都会返回此消息:
D:\>curl -G localhost:8080/demo/first -d name=Biagio
{"name":"Biagio","timestamp":"2020-10-05T08:54:18.623+00:00","email":"biagio@gmal.com","surname":"Biagio2"}
我的数据库:
+----+------------------------+----------+----------------------------+---------+
| id | email | name | stmp | surname |
+----+------------------------+----------+----------------------------+---------+
| 32 | mirketto90@yahoo.it | Mirko | 2020-10-01 12:31:47.827000 | NULL |
| 36 | biagio@gmail.com | Biagio | 2020-10-01 16:31:31.687000 | Vaso |
| 37 | biagio@gmail.com | Biagio | 2020-10-01 16:31:50.077000 | Vaso |
| 38 | biagio@gmail.com | Biagio | 2020-10-01 18:35:45.992000 | Vaso |
| 39 | | Mirko | 2020-10-02 13:24:05.840000 | Vaso |
| 40 | mirkoparioli@gmail.com | Mirko | 2020-10-02 13:24:23.383000 | Vaso |
| 47 | giovanni@gmal.com | Giovanni | 2020-10-05 12:11:05.997000 | John |
+----+------------------------+----------+----------------------------+---------+
我确定我使用的数据库正确(db_example),这是我的
@SpringBootApplication
public class AccessingDataMysqlApplication {
public static void main(String[] args) {
SpringApplication.run(AccessingDataMysqlApplication.class,args);
}
}
@RestController@RequestMapping("/demo")
public class MainController {
@Autowired
private UserService userService;
@Transactional
//@RequestMapping(value = "/add/",method = RequestMethod.POST)
@PostMapping(path = "/demo/add")
public String addNewUser(@PathVariable("name") String name,@PathVariable("email") String email,@PathVariable("surname") String surname) {
UserDto n = new UserDto();
n.setName(name);
n.setSurname(surname);
n.setEmail(email);
userService.create(n);
return "User Saved in DB";
}
@SuppressWarnings({
"rawtypes","unchecked"
})
//@RequestMapping(value = "/fetchUser/{name}",method = RequestMethod.GET)
@GetMapping("/demo/first")
public ResponseEntity < UserDto > fetchUser(@PathVariable("name") String name) {
System.out.println(name);
try {
UserDto namefound = userService.findFirstByName(name);
System.out.println("Name found");
ResponseEntity < UserDto > user = new ResponseEntity < UserDto > (namefound,HttpStatus.OK);
return user;
} catch(NoResultException ne) {
System.out.println("User not found");
return new ResponseEntity("User not found with name : " + name,HttpStatus.NOT_FOUND);
}
}
}
解决方法
-
用于将用户添加到数据库中
在PostMapping中修改路径来自
@PostMapping(path = "/demo/add")
到@PostMapping(path = "/demo/add/{name}/{email}/{surname}")
这是因为在您的 addNewUser 方法中,您将名称,电子邮件,姓氏接受为 PathVariable 。
为了使@PathVariable稍微清晰一点,它是一个注释,指示应与哪个URI模板变量匹配的方法参数。以您的情况为例,
{name} -是URI模板变量 addNewUser方法中的字符串 name -是方法参数(可以在方法的其余部分中使用{name}值的别名)您必须像这样访问api
localhost:8080/demo/add/Biagio/biagio@gmail.com/Vaso
-
按名称获取用户
在GetMapping中修改路径
与上面的解释类似,来自
@GetMapping("/demo/first")
到@GetMapping("/demo/first/{name}")
您必须像这样访问api
localhost:8080/demo/first/Biagio
我自己解决了这个问题。当在UserServiceImpl上使用@Autowired时,“私有”实在太多了。该项目是公平且良好的连接。如有任何疑问,请随时写信给我。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。