UserServiceImpl.java
@Override
public List<User> getAllUsers() {
User user = new User();
List<User> ulist = new ArrayList<>();
String query = "select * from user";
try {
dataBaseConnection.pstmt = dataBaseConnection.conn.prepareStatement(query);
dataBaseConnection.rs = dataBaseConnection.pstmt.executeQuery();
while ( dataBaseConnection.rs.next() ) {
ulist.add(new User(dataBaseConnection.rs.getInt(1),
dataBaseConnection.rs.getString(2),
dataBaseConnection.rs.getString(3),
dataBaseConnection.rs.getString(4),
dataBaseConnection.rs.getString(5),
dataBaseConnection.rs.getString(6),
dataBaseConnection.rs.getInt(7),
dataBaseConnection.rs.getInt(8)
));
}
System.out.println("getting all users successfully...");
} catch (Exception e) {
e.printStackTrace();
}
return ulist;
}
控制器类名UserOperationController.java
@GetMapping("/get-all-user")
public List<User> fetchUsers() {
List<User> users = new ArrayList<User>();
users = this.userService.getAllUsers();
return users;
}
我试图将用户信息存储在列表中,但不是存储用户信息列表而是存储用户类的内存对象。这里的 User 是 @Entity,它有 getter 和 setter。当调用 Get Mapping url 时 它产生如下输出:
[
{
"userName": null,
"userEmail": null,
"userPassword": null,
"userState": null,
"userCity": null,
"userId": 0,
"userAge": 0,
"userMobile": 0
},
{
"userName": null,
"userEmail": null,
"userPassword": null,
"userState": null,
"userCity": null,
"userId": 0,
"userAge": 0,
"userMobile": 0
}
]
我期望来自数据库的值而不是空值,但它会生成输出空值。帮我找到正确答案。
我建议使用 Spring Data JPA。据我所知,对于像从数据库获取所有实体这样的标准情况,没有必要自己编写 SQL 查询。使用 Spring Data JPA,您可以创建一个扩展 JpaRepository 的接口,它将为您处理所有艰苦的工作。
这是一个例子:
public interface ClientRepository extends JpaRepository<User, Long> {
// Predefined queries to the database
}
在此示例中,User 表示实体类型,Long 表示实体主键的类型(在本例中为具有 Long ID 的 User 实体)。
当您使用 JPA 存储库时,您需要做的就是:
public List<Client> getAllClients() {
return clientRepository.findAll();
}
这种方法简化了数据访问,并且无需为标准 CRUD 操作编写样板代码。
如果您还有任何其他问题,请随时回复此帖子!