如何在java中处理通用列表List <myclass>以特定方式获取结果集</myclass>

时间:2014-06-24 06:24:46

标签: java mysql generics

我正在为公司制作数据库驱动的常见问题解答 我有一个带变量

的Faq.java类

1.faqUid 2.faqQuestion 3.faqAnswer 4.companyUserRole

所以我通过dao从数据库中获取结果你们都知道。我已经列出了一个列表&lt;&gt;数据类型

private List<Faq> fetchFaqs;
fetchFaqs = faqService.fetchRnrFaq(rnrUser);

现在fetchFaqs是一个通用列表,其数据类型在faq.java中指定。

现在假设我从数据库中获取数据

骷髅:

faqUid | faqQuestion | faqAnswer | companyUserRole

数据:

1 |问题1 |问题2 |超级管理员 2 |问题1 |问题2 |集团管理员 3 |问题1 |问题2 |用户

因此,您可以看到我对所有三种类型的角色都有相同的问题和答案,即超级管理员,组管理员和用户。

当我正常取得时,我得到了

经常提出的问题

Q.1问题1 A.1答案1

Q.2问题2
A.2答案2

Q.3问题3
A.3答案3

我想要的是

常见问题(超级管理员)

Q.1问题1 A.1答案1

常见问题(小组管理员)

Q.1问题1 A.1答案1

常见问题(用户)

Q.1问题1 A.1答案1

我该如何实现这个?????????????。

PS。没有什么是硬编码的,一切都是数据库驱动的

faq.java类

private String faqQuestion;
private String faqAnswer;
private String faqUid;
private String userRoleName;

并且各自有吸气剂和设定者

2 个答案:

答案 0 :(得分:0)

根据companyUserRole字段(例如Map)对结果进行分组,并处理每种类型的结果。

答案 1 :(得分:0)

我假设您的Faq类包含数据库中的所有字段,并且您可以修改查询。恕我直言,获得所需内容的最简单方法是使用ORDER BY companyUserRole对查询进行排序。然后你可以这样处理(伪代码):

currentRole = "";

for(Faq faq: fetchFaqs) {
    if ! currentRole.equals(faq.role) {
        currentRole = faq.role
        display_new_role_group_header()
    display_faq(faq)

那样:

  • 您在每个组的顶部正确显示标题
  • 您的问题/答案按角色分组显示
  • 您只向数据库发送一个查询
  • 角色列表是数据库驱动的