こんにちは。
Javaについて初学者なので拙いところもあると思いますが、よろしくお願いします。
###実現したいこと
Id | Name | Country |
---|---|---|
1 | Taro | Japan |
2 | Mike | America |
3 | Li | China |
4 | Hanako | Japan |
5 | Daisy | America |
データベース上に上記のようなname_listテーブルがあるとして、
これを国ごとにHTMLのテーブルで分けて表示したいとします。
###コード
Repositoryクラス
Java
1public interface NameListRepository extends JpaRepository<NameList, Integer> { 2 public static final String _query 3 = "SELECT" 4 + "*" 5 + " FROM" 6 + " name_list" 7 + " GROUP BY" 8 + " country" 9 ; 10 @Query(value = _query, nativeQuery = true) 11 List<NameList> findAll(); 12}
Controllerクラス
Java
1@Controller 2public class TestController { 3 @Autowired 4 private NameListRepository nameListRepository; 5 6 @GetMapping("/Test") 7 public String getNameList(Model model) { 8 List<NameList> NameList = nameListRepository.findAll(); 9 model.addAttribute("NameList", NameList); 10 11 return "Test"; 12 } 13}
View(Thymeleaf)
Thymeleaf
1<table th:each="group: ${NameList}"> 2<tr> 3 <th>名前</th> 4 <th>国</th> 5</tr> 6<tr th:each="item: ${group}"> 7 <td th:text="${item.Name}"></td> 8 <td th:text="${item.Country}"></td> 9</tr> 10</table> 11
###わからないところ
上記のようなHTMLでグループごとの表示が出来ると思ったのですが、
<tr th:each="item: ${group}">
のところがやはり機能していないみたいで、
各テーブル内が繰り返し表示されません。
どうすれば実現できるでしょうか。
回答よろしくお願いします。
###追記
みなさんのコメントや回答で気付いたのですが、SQLでのGROUP BYとJavaでのGroupingByを混同しており、
Groupの中身を参照出来るのは後者であるためRepositoryクラスとControllerを書き換えました。
Repositoryクラス
Java
1public interface NameListRepository extends JpaRepository<NameList, Integer> { 2}
Controllerクラス
@Controller public class TestController { @Autowired private NameListRepository nameListRepository; @GetMapping("/Test") public String getNameList(Model model) { List<NameList> NameList = nameListRepository.findAll(); Map<String, List<NameList>> NameListMap = NameList.stream() .collect(Collectors.groupingBy(obj -> obj.getCountry)); model.addAttribute("NameList", NameList); return "Test"; } }
この後View(Thymeleaf)でCountryのMapごとにNameListが列挙されたTableを表示させる方法が知りたいです。
一応この記事の前半部分に似たようなことが書いてあり、試してみましたが表示されなくなりました。
https://teratail.com/questions/138795
補足情報
Eclipse 2020 Java FullEdition
AmazonCorretto jdk15.0.2_7
SpringBoot 2.4.3
MySQL 8.0.23
Windows10 Pro 1909
回答2件
あなたの回答
tips
プレビュー