LineChart Primefaces从DB获取数据
问题描述:
我想在过去30天内创建收益报告折线图,我只需要系列1(水平图)上的日期和系列2(垂直图)上的总收入。 对象是包含String日期和BigDecimal totalAmount的DayBill。我想让日期= 2017-09-19得到totalamount = 112527.5,依此类推。LineChart Primefaces从DB获取数据
public class ChartViewBean implements Serializable {
private LineChartModel lineModel1;
private List<DayBill> bills;
private TotalSalesDAO dao;
@PostConstruct
public void init() {
createLineModels();
}
public void itemSelect(ItemSelectEvent event) {
FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Item selected",
"Item Index: " + event.getItemIndex() + ", Series Index:" + event.getSeriesIndex());
FacesContext.getCurrentInstance().addMessage(null, msg);
}
public LineChartModel getLineModel1() {
return lineModel1;
}
private void createLineModels() {
lineModel1 = initLinearModel();
lineModel1.setTitle("Linear Chart");
lineModel1.setLegendPosition("e");
Axis yAxis = lineModel1.getAxis(AxisType.Y);
yAxis.setMin(0);
yAxis.setMax(10);
lineModel1.setExtender("skinChart");
}
private LineChartModel initLinearModel() {
LineChartModel model = new LineChartModel();
LineChartSeries series1 = new LineChartSeries();
series1.setLabel("Series 1");
series1.set(1, 2);
series1.set(2, 1);
series1.set(3, 3);
series1.set(4, 6);
series1.set(5, 8);
LineChartSeries series2 = new LineChartSeries();
series2.setLabel("Series 2");
series2.set(1, 6);
series2.set(2, 3);
series2.set(3, 2);
series2.set(4, 7);
series2.set(5, 9);
model.addSeries(series1);
model.addSeries(series2);
return model;
}
这是我的DAO,我已经得到了我想要的数据。问题是我不知道如何将数据放入图表。
public List<DayBill> getDayBills() throws Exception
{
Connection conn = ds.getConnection();
PreparedStatement ps = null;
ResultSet rs = null;
StringBuffer query = new StringBuffer();
List<DayBill> list = new ArrayList<DayBill>();
query
.append(" select SUM(GRAND_TOTAL) , substr(BILL_DATE,0,11) ")
.append(" from R_BILL where substr(BILL_DATE,0,11) >= date('now','localtime','-30 day') ");
query.append(" group by strftime('%d',BILL_DATE) ");
query.append(" order by BILL_DATE ASC ");
try
{
DayBill daybill;
ps = conn.prepareStatement(query.toString());
rs = ps.executeQuery();
while(rs.next())
{
daybill = new DayBill();
daybill.setTotalAmount(rs.getBigDecimal(1));
daybill.setDate(rs.getString(2));
list.add(daybill);
}
}
finally
{
if(rs != null)
rs.close();
if(ps != null)
ps.close();
if(conn != null)
conn.close();
}
return list;
}
答
所以有效这个问题是不是数据库,因为数据库的部分作品有关系吗? – Kukeltje
我的意思是我想做一个折线图,但我从上面的查询中获得数据,然后我放入模型中,然后我只想知道如何将模型放入折线图 – Andre
很明显你想要什么,但是如果数据库查询的工作原理与数据库没有关系,那么您应该查看数据库结果并填写它,就像在PrimeFaces展示中所做的那样 – Kukeltje