初歩【SpringBoot】DBの情報を一覧表示したい
Q&A
Closed
解決したいこと
JavaのSpringBootでユーザ情報をデータベースに登録し、その情報を一覧表示できるWebアプリを作成中です。
データを追加することはできましたが、一覧を表示するためのコードを書いたところ、表示されず困っている状態です。
解決方法を教えて下さい。
該当するソースコード
一覧表示するためのhtmlファイル
【greeting.html】
<div>
<h2>ユーザ管理画面</h2>
<table>
<thead>
<tr>
<th>ユーザID</th>
<th>ユーザ名</th>
<th>ユーザ年齢</th>
</tr>
</thead>
<tbody>
<tr th:each="account: ${users}">
<td th:text="${account.userId}"></td>
<td th:text="${account.userName}"></td>
<td th:text="${account.userAge}"></td>
</tr>
</tbody>
</table>
</div>
Controllerクラス
【HomeController.java】
@Controller
public class HomeController {
private TaskListDao dao;
@Autowired
HomeController(TaskListDao dao) {
this.dao = dao;
}
record Users(String id, String name, String age) {}
@GetMapping("/greeting")
public String greeting(Model model) {
List<Users> users = dao.find();
model.addAttribute("account", users);
return "greeting";
}
@GetMapping("/test")
public String test(@RequestParam("name") String name, @RequestParam("age") String age, Model model) {
String id = UUID.randomUUID().toString().substring(0,8);
Users u = new Users(id,name, age);
dao.userAdd(u);
model.addAttribute("user_id", u.id());
model.addAttribute("user_name", u.name());
model.addAttribute("user_age", u.age());
return "greeting";
}
}
SQL操作のためのDAOクラス
【TaskListDao.java】
@Service
public class TaskListDao {
private final JdbcTemplate jdbcTemplate;
@Autowired
TaskListDao(JdbcTemplate jdbcTemplate) {
public int userAdd(Users u) {
int insert= jdbcTemplate.update("INSERT INTO Account" + "(userId,userName,userAge) VALUES(?,?,?)",u.id(),u.name(), u.age());
return insert;
}
public List<Users> find() {
String sql = "SELECT * FROM ACCOUNT";
List<Map<String, Object>> result = jdbcTemplate.queryForList(sql);
List<Users> users = result.stream()
.map((Map<String, Object> row) -> new Users(
row.get("userId").toString(),
row.get("userName").toString(),
row.get("userAge").toString()))
.toList();
return users;
}
}
自分で試したこと
データをINSERTする際にエラーは発生せず、h2-console画面でもデータが格納されていることを確認済みです。
また、TaskListDaoクラスでもstreamを使用し、mapメソッドでSQL情報をGETしString型にキャストしていますが、Controllerクラスからhtmlファイルへのデータの受け渡しができていないのではないかと考えております。
書籍を読みながら自分でユーザの登録部分については実装中ですが、なぜ表示されないかがさっぱりです。
ぜひ、ご教授願います。