我正在尝试学习如何使用springboot和thymeleaf制作Web应用程序。作为练习,我想显示一个我在mysql(人)中创建的随机数据库表的两列,它们是一个简单的html表。
我为此使用了一些教程,并在下面编写了代码,但是我的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); } }
控制器
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>
您已在中的变量user中绑定了Users modelAttribute。尝试users在用作users列表的HTML中作为原因进行绑定
user
modelAttribute
users
md.addAttribute("users", service.findAll()); return "user";