Jsf 线形图从数据库中提取数据

Jsf 线形图从数据库中提取数据,jsf,charts,primefaces,Jsf,Charts,Primefaces,我想做一个最近30天的收入报告折线图,我只需要第1组的日期(水平图)和第2组的总收入(垂直图)。 对象是DayBill,包含字符串date和BigDecimal totalAmount。我想让date=2017-09-19得到totalamount=112527.5,依此类推 public class ChartViewBean implements Serializable { private LineChartModel lineModel1; private List<DayBil

我想做一个最近30天的收入报告折线图,我只需要第1组的日期(水平图)和第2组的总收入(垂直图)。 对象是DayBill,包含字符串date和BigDecimal totalAmount。我想让date=2017-09-19得到totalamount=112527.5,依此类推

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;

}
公共类ChartViewBean实现可序列化{
专用LineChartModel lineModel1;
私人名单法案;
私人道道;
@施工后
公共void init(){
createLineModels();
}
public void itemSelect(ItemSelectEvent事件){
FacesMessage msg=新的FacesMessage(FacesMessage.SEVERITY_信息,“已选择项目”,
项目索引:“+event.getItemIndex()+”,系列索引:“+event.getSerieIndex());
FacesContext.getCurrentInstance().addMessage(null,msg);
}
公共LineChartModel getLineModel1(){
返回行模型1;
}
私有void createLineModels(){
lineModel1=initLinearModel();
lineModel1.setTitle(“线性图”);
lineModel1.setLegendPosition(“e”);
Axis yAxis=lineModel1.getAxis(AxisType.Y);
yAxis.setMin(0);
yAxis.setMax(10);
lineModel1.setExtender(“skinChart”);
}
私有LineChartModel initLinearModel(){
LineChartModel模型=新的LineChartModel();
LineChartSeries系列1=新的LineChartSeries();
系列1.设置标签(“系列1”);
序列1.集合(1,2);
序列1.集合(2,1);
系列1.集合(3,3);
系列1.组(4,6);
系列1.组(5,8);
LineChartSeries系列2=新的LineChartSeries();
系列2.设置标签(“系列2”);
序列2.集合(1,6);
序列2.集合(2,3);
序列2.集合(3,2);
系列2.组(4,7);
系列2.组(5,9);
型号.添加系列(系列1);
型号.添加系列(系列2);
收益模型;
}
这是我的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;
}
public List getDayBills()引发异常
{
连接conn=ds.getConnection();
PreparedStatement ps=null;
结果集rs=null;
StringBuffer查询=新建StringBuffer();
列表=新的ArrayList();
查询
.append(“选择总和(总计),子项(账单日期,0,11)”)
.append(“从R_BILL开始,其中substr(BILL_DATE,0,11)>=日期('now'、'localtime'、'-30天');
query.append(“按strftime分组(“%d”,账单日期)”;
查询。追加(“按账单日期ASC订购”);
尝试
{
日票日票;
ps=conn.prepareStatement(query.toString());
rs=ps.executeQuery();
while(rs.next())
{
daybill=新的daybill();
daybill.setTotalAmount(rs.getBigDecimal(1));
daybill.setDate(rs.getString(2));
列表。添加(日账单);
}
}
最后
{
如果(rs!=null)
rs.close();
如果(ps!=null)
ps.close();
如果(conn!=null)
康涅狄格州关闭();
}
退货清单;
}

既然数据库部分起作用,那么这个问题实际上与数据库无关?我的意思是我想制作一个折线图,但我从上面的查询中获得了数据,然后我将其放入模型,然后我只想知道如何将模型放入折线图。很明显,您想要什么,但如果DB查询起作用,则与数据库没有关系您只需浏览数据库结果,并像PrimeFaces Showcase中所做的那样填充它。单击上面的文本,然后大家就可以看到图片。这不是问题的答案。请编辑您的问题。