【问题标题】:How to add derived variable from sql query to a list in java如何将来自sql查询的派生变量添加到java中的列表
【发布时间】:2014-03-05 16:47:16
【问题描述】:

我有以下查询:

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 包含包括计数在内的所有属性。

谢谢

【问题讨论】:

    标签: java sql list add


    【解决方案1】:

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

    class MonitorAlertInstance {
        private int count;
    
        public void setCount(int count) {
            this.count = count;
        }
    
        public int getCount() {
            return count;
        }
    }
    

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

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

    【讨论】:

    • 谢谢。我想知道是否有其他方法可以做到这一点。不管怎么说,还是要谢谢你。 :-)
    猜你喜欢
    • 1970-01-01
    • 2021-12-27
    • 1970-01-01
    • 1970-01-01
    • 2021-12-22
    • 2022-11-16
    • 1970-01-01
    • 1970-01-01
    • 2019-12-28
    相关资源
    最近更新 更多