有什么方法可以将用户存储在从数据库mysql获取的用户列表中吗?我正在使用 Spring Boot 创建 Rest api

问题描述 投票:0回答:1

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
    }
]

我期望来自数据库的值而不是空值,但它会生成输出空值。帮我找到正确答案。

java mysql rest spring-mvc
1个回答
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 操作编写样板代码。

如果您还有任何其他问题,请随时回复此帖子!

© www.soinside.com 2019 - 2024. All rights reserved.