java之springboot + thymeleaf 在html表格中显示数据库内容

pengyingh 阅读:117 2023-08-25 12:46:42 评论:0

我正在尝试学习如何使用 springboot 和 thymeleaf 制作网络应用程序。作为练习,我想在一个简单的 html 表中显示我在 mysql (persons) 中创建的随机数据库表中的两列。

我为此使用了几个教程并编写了下面的代码,但是我的 html 不显示数据库的内容,只显示表头。我完全不知道我哪里错了。我在这里查找了其他问题,他们都在使用一种叫做 jpa 的东西。这比我的方法好吗?如果是这样,我在哪里可以找到初学者的教程。

代码

应用类

package ro.database.jdbcTest; 
 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.boot.SpringApplication; 
import org.springframework.boot.autoconfigure.SpringBootApplication; 
import org.springframework.scheduling.annotation.EnableAsync; 
import ro.database.jdbcTest.controllers.UsersController; 
 
@SpringBootApplication 
@EnableAsync 
public class App 
{ 
    @Autowired 
    UsersController service; 
 
    public static void main( String[] args ) 
    { 
        SpringApplication.run(App.class); 
    } 
 
} 

Controller

package ro.database.jdbcTest.controllers; 
 
 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 
import org.springframework.web.bind.annotation.ResponseBody; 
import ro.database.jdbcTest.model.Users; 
import ro.database.jdbcTest.services.UserService; 
 
import java.util.List; 
import java.util.Map; 
 
 
@Controller 
public class UsersController { 
 
    @Autowired 
    UserService service; 
 
    @RequestMapping(value = "/user", method = RequestMethod.GET) 
    public String index(Model md){ 
        md.addAttribute("user", service.findAll()); 
 
        return "user"; 
    } 
} 

服务等级

package ro.database.jdbcTest.services; 
 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.jdbc.core.JdbcTemplate; 
import org.springframework.jdbc.core.RowMapper; 
import org.springframework.stereotype.Service; 
import ro.database.jdbcTest.model.Users; 
 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.util.List; 
 
@Service 
public class UserService { 
 
    @Autowired 
    JdbcTemplate template; 
 
    public List<Users> findAll() { 
        String sql = "select * from people"; 
        RowMapper<Users> rm = new RowMapper<Users>() { 
            @Override 
            public Users mapRow(ResultSet resultSet, int i) throws SQLException { 
                Users user = new Users(resultSet.getInt("id"), 
                        resultSet.getString("name"), 
                        resultSet.getInt("age")); 
                String email = resultSet.getString("email"); 
                if (email != null) { 
                    user.setEmail(email); 
                } 
 
                return user; 
            } 
        }; 
 
        return template.query(sql, rm); 
    } 

和模型类

package ro.database.jdbcTest.model; 
 
public class Users { 
 
        private int id; 
        private String name; 
        private int age; 
        private String email; 
 
        public Users(int id, String name, int age){ 
            this.id=id; 
            this.name=name; 
            this.age=age; 
        } 
 
        public void setEmail(String email){ 
            this.email=email; 
        } 
} 

HTML

<!DOCTYPE html> 
<html lang="en" xmlns:th="http://www.w3.org/1999/xhtml"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Title</title> 
</head> 
<body> 
<h2>Users</h2> 
<table border="1"> 
    <tr> 
        <th>name</th> 
        <th>age</th> 
    </tr> 
    <tr th:each = "user: ${users}"> 
        <td th:text="${user.name}">vasile</td> 
        <td th:text="${user.age}">45</td> 
    </tr> 
</table> 
</body> 
</html> 

请您参考如下方法:

您已将用户绑定(bind)到 modelAttribute 中的变量 user 中。尝试绑定(bind)为 users 因为在 HTML 中你使用 users 作为列表

md.addAttribute("users", service.findAll()); 
return "user"; 


标签:Spring Boot
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号