如何在我的 html spring 引导 jdbc 上同时显示名字和姓氏

How would I display both first name and Surname on my html spring boot jdbc

我在我的 jdbcTemplate 中使用 select 语句。我正在尝试 select 名字和姓氏并将它们显示在 html 页面上但是我得到 errors.The 错误代码 我在 HTml 页面上得到的是 "不正确的列数:预期为 1,实际为 2"

    public List<String> getAllUserNames() {
    List<String> usernameList = new ArrayList<>();
    usernameList.addAll(jdbcTemplate.queryForList("SELECT FirstName,Surname from paitents",String.class));
    return usernameList;
}

Html 文件

<tr th:each="user : ${users}">
    <a href="#" th:text="${user} + ${user.Surname}" ></a> <br>
<!--    <td th:text="${user}"> </td> <br>-->

</tr>
</body>

您正在构造一个 String 列表,然后试图将一个复杂的对象类型插入到列表中。您在这里有两个解决方案;第一个是使用复杂类型并使用该列表。示例如下:

public List<User> findAllUsers() {
   String sql = "SELECT FirstName,Surname from paitents";
   return jdbcTemplate.query(sql,
                (rs, rowNum) ->
                        new User(
                                rs.getString("FirstName"),
                                rs.getString("Surname")
                        ));
}

然后在 thymeleaf 代码中:

<tr th:each="user : ${users}">
    <a href="#" th:text="${user.FirstName} + ${user.Surname}" ></a> <br>
</tr>

另一个解决方案是快速修复,您可以使用 sql 技巧来做到这一点:

public List<String> getAllUserNames() {
    List<String> usernameList = new ArrayList<>();
    usernameList.addAll(jdbcTemplate.queryForList("SELECT CONCAT(FirstName, ' ', Surname) AS FullName from paitents",String.class));
    return usernameList;
}

你应该把这个列表放在你的控制器方法的模型中:

model.addAttribute("fullNameList", usernameList);

然后在视图层:

<tr th:each="fullName : ${fullNameList}">
    <a href="#" th:text="${fullName}" ></a> <br>
</tr>