Java 来自数据库的JFreeChart条形图数据集

Java 来自数据库的JFreeChart条形图数据集,java,database,model-view-controller,jfreechart,bar-chart,Java,Database,Model View Controller,Jfreechart,Bar Chart,我的目标是使用JFreeChart生成 我正在尝试使用MVC从数据库中获取JFreeChart数据;Bean、数据访问对象(DAO)和Servlet。我在Servlet中编写代码时遇到问题。以下代码是我到目前为止的代码 帮助将被恳求并提前感谢您!:) 数据库 id |收入 R1 | 999 M3 | 832 G7 | 318 Bean public class Revenue { private String id; private Integer revenue; //g

我的目标是使用JFreeChart生成

我正在尝试使用MVC从数据库中获取JFreeChart数据;Bean、数据访问对象(DAO)和Servlet。我在Servlet中编写代码时遇到问题。以下代码是我到目前为止的代码

帮助将被恳求并提前感谢您!:)

数据库

id |收入


R1 | 999
M3 | 832
G7 | 318

Bean

public class Revenue
{
   private String id;
   private Integer revenue;

   //getters and setters
}
DAO

public ArrayList<Revenue> getAllRevenueList()
{
  try
  {
      //driver 
      //connection code 

     String sql = "SELECT id,revenue FROM revenue_table";
     Statement stmt = con.createStatemtnt();
     ResultSet rs = stmt.executeQuery(sql);

     ArrayList<Revenue> revenueList = new ArrayList<Revenue>();
     while(rs.next)
     {
        Revenue r = new Revenue();
        r.setId(rs.getString("id"));
        r.setRevenue(Integer.parseInt(rs.getString("revenue")));
        revenueList.add(r);  //add object to list
     }

     return revenueList;
  }
  catch(Exception e)
  {
     e.printStackTrace();
     return null;
  }
}
public ArrayList getAllRevenueList()
{
尝试
{
//司机
//连接代码
String sql=“选择id,来自收入表的收入”;
语句stmt=con.createStatemtnt();
结果集rs=stmt.executeQuery(sql);
ArrayList revenueList=新ArrayList();
while(rs.next)
{
收入r=新收入();
r、 setId(rs.getString(“id”);
r、 setRevenue(Integer.parseInt(rs.getString(“revenue”));
revenueList.add(r);//将对象添加到列表
}
回归复仇者;
}
捕获(例外e)
{
e、 printStackTrace();
返回null;
}
}
Servlet

protected void doGet(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {

        response.setContentType("image/png");

        OutputStream outputStream = response.getOutputStream();
JFreeChart chart = getRevenueChart();

int width = 1100;
            int height = 350;
            ChartUtilities.writeChartAsPNG(outputStream, chart, width, height);


}

public JFreeChart getRevenueChart() {

//Cannot instantiate the type CategoryDataset

        CategoryDataset dataset = new CategoryDataset();

        ArrayList<Bean> revenueList = DAO.getAllRevenueList();

        if (revenueList != null && !revenueList.isEmpty()) {
            for (Bean r : revenueList) {
                dataset.setValue(r.getRevenue(), r.getID());

            }
        }

        JFreeChart chart = ChartFactory.createBarChart3D("Graph Title", 
                "ID", 
                "Revenue",
                dataset, 
                PlotOrientation.VERTICAL, 
                false,
                false,
                false);

        CategoryPlot plot = chart.getCategoryPlot();
        CategoryAxis axis = plot.getDomainAxis();

        CategoryItemRenderer renderer = plot.getRenderer();
        BarRenderer r = (BarRenderer) renderer;
        r.setMaximumBarWidth(0.95);

        return chart;
    }
protectedvoiddoget(HttpServletRequest),
HttpServletResponse响应)引发ServletException,IOException{
response.setContentType(“image/png”);
OutputStream OutputStream=response.getOutputStream();
JFreeChart chart=getRevenueChart();
整数宽度=1100;
内部高度=350;
ChartUtilities.writeChartAsPNG(输出流、图表、宽度、高度);
}
公共JFreeChart getRevenueChart(){
//无法实例化类型CategoryDataset
CategoryDataset dataset=新CategoryDataset();
ArrayList revenueList=DAO.getAllRevenueList();
if(revenueList!=null&&!revenueList.isEmpty()){
for(Bean r:收入者){
setValue(r.getRevenue(),r.getID());
}
}
JFreeChart chart=ChartFactory.createBarChart3D(“图形标题”,
“身份证”,
“收入”,
数据集,
PlotOrientation.VERTICAL,
假,,
假,,
假);
CategoryPlot=chart.getCategoryPlot();
CategoryAxis轴=plot.getDomainAxis();
CategoryItemRenderer=plot.getRenderer();
BarRenderer=(BarRenderer)渲染器;
r、 设置最大宽度(0.95);
收益表;
}

如果您的问题是根据给定的
列表创建图表,请尝试以下操作

DefaultCategoryDataset dataset = new DefaultCategoryDataset();
for (Revenue revenue : revenueList) {
  // the middle parameter is for naming the value, can be empty if you have just one
  dataset.addValue(revenue.getRevenue(), "", revenue.getId());
}

JFreeChart chart = ChartFactory.createBarChart(
  "",
  "",
  "Revenues",
  dataset,
  PlotOrientation.VERTICAL,
  true,
  false,
  false
);                // or whatever parameters you need

关于静态工厂方法的信息是。

那么您在创建图表时遇到问题了吗?你试过什么?或者在Servlet中应该做什么?你试过什么?很有魅力!谢谢!:)