MySQL 不显示数据库中的用户,即使他们存在
MySQL does not show the Users inside the database even if they are present
我对 MySql 有一个奇怪的问题。我用 Spring-Boot MySql 做了一个小项目,但是当我尝试向数据库添加一个新用户时,它给了我成功消息,但随后会在 mysql [=32 上看到=] 即使有,数据库中也不会出现任何内容(因为使用 Get 它实际上找到了插入的用户)。现在我不明白问题是什么。我附上应用程序。我的 Spring 项目的属性。
每次我要求得到它returns这个MESSAGE:
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.The 项目上的 @Autowired 公平且连接良好时,“私人”太多了。有什么事请给我写信。
我对 MySql 有一个奇怪的问题。我用 Spring-Boot MySql 做了一个小项目,但是当我尝试向数据库添加一个新用户时,它给了我成功消息,但随后会在 mysql [=32 上看到=] 即使有,数据库中也不会出现任何内容(因为使用 Get 它实际上找到了插入的用户)。现在我不明白问题是什么。我附上应用程序。我的 Spring 项目的属性。
每次我要求得到它returns这个MESSAGE:
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.The 项目上的 @Autowired 公平且连接良好时,“私人”太多了。有什么事请给我写信。