java - 如何将sql查询的派生变量添加到java中的列表中

标签 java sql list addition

我有以下查询:

SELECT MAX(MONITOR_ALERT_INSTANCE_ID) AS MONITOR_ALERT_INSTANCE_ID,
  description,
  MAX(CO_MOD_ASSET_ID) as CO_MOD_ASSET_ID,
  COUNT(MONITOR_ALERT_INSTANCE_ID) AS COUNT
FROM monitor_alert_instance
WHERE description IN
  (SELECT description
  FROM monitor_alert_instance
  WHERE co_mod_asset_id = 123
  )
GROUP BY description;

以及以下类为查询的每个属性设置值:

public void execute(Connection connection) throws SQLException {        
                PreparedStatement ps = connection.prepareStatement(queryString);
        //      ps.setLong(1, (long) 4);

                int index = 1;
                ResultSet rs = ps.executeQuery();


                int columnCount = rs.getMetaData().getColumnCount();
                systemHealthAlertList = new ArrayList<MonitorAlertInstance>();

                while(rs.next())
                {   
                     MonitorAlertInstance monitor = new MonitorAlertInstance();
                     MonitorAlert mon = new MonitorAlert();
                     CompanyModuleAsset cma = new CompanyModuleAsset();
                     MonitorAlertDAO maDAO = new MonitorAlertDAO(getSession());
                     CompanyModuleAssetDAO cmaDAO = new CompanyModuleAssetDAO(getSession());


                        monitor.setMonitorAlertInstanceId(rs.getLong(1));
                        monitor.setDescription(rs.getString(2));
                         mon.setMonitorAlertId(rs.getLong(3));

                         Date d = monitor.getCreatedDate();
                         Format formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                         DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

                         String s = formatter.format(rs.getDate(4));
                         Date date = null;
                        try {
                            date = format.parse(s);
                        } catch (ParseException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }

                         monitor.setCreatedDate(date);
                         System.out.println("Date is : " + date);

                         monitor.setStatus(rs.getString(5));
                         cma.setCoModAssetId(rs.getLong(6));


                        Long monitorAlertId = mon.getMonitorAlertId();
                        Long coModAssetId= cma.getCoModAssetId();

                        MonitorAlert ma =   maDAO.findById(monitorAlertId);
                        monitor.setMonitorAlert(ma);    

                        CompanyModuleAsset cm = cmaDAO.findById(coModAssetId);
                        monitor.setCompanyModuleAsset(cm);

                        systemHealthAlertList.add(monitor);


                     }      


                rs.close();
                ps.close();
            }
        }

我的问题是,在查询中“count”是一个派生变量。如何将计数结果添加到 systemHealthAlertList 中。因此 systemHealthAlertList 包含所有属性,包括计数。

谢谢

最佳答案

您必须修改MonitorAlertInstance。添加另一个字段:

class MonitorAlertInstance {
    private int count;

    public void setCount(int count) {
        this.count = count;
    }

    public int getCount() {
        return count;
    }
}

然后像设置其他字段一样设置它:

monitor.setCount(rs.getInt(4));

关于java - 如何将sql查询的派生变量添加到java中的列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22203958/

相关文章:

java - Java 列问题中的 GridBagLayout

sql - 更新同一个表中的列

mysql - 只要至少每小时有一个连续链,如何将日期时间表分组在一起?

html - 使用 HTML 和 CSS 在 float 图像列表项上放置文本?

python 对象改变属性

python有条件地访问列表列表

java - 布局似乎有问题,JButton 在调整窗口大小时显示意外行为

java - Spark.sql.columnNameOfCorruptRecord 的默认值是什么?

java - 只需在整个 netbeans 解决方案中搜索一个字符串

mysql - 在 MySQL 中按数字顺序排序,然后按字母顺序排序