开发环境:
JSF + Hibernate + MySQL
问题发现:
先来看看sql语句:
select biomarker_type,count(geneid) from biomarkers group by biomarker_type;
由于工程使用的是Hibernate,一般有关数据的CRUD都是通过HQL执行的,即HQL操作的是个实体对象(bean),该对象映射到数据中的一张表中,而上面的查询涉及到sql的聚集函数,查询出来的数据关联不了已经存在的实体对象属性中,自然在渲染到页面的时候也是显得力不从心。。。
解决想法:
把查询结果保存在一个临时的bean对象中。。。
具体实现:
1、新建一个bean对象StatisticsQuery,定义两个属性param1,param2,要有其对应的存取器。
2、将查询结果保存到对象StatisticsQuery中:
public List<StatisticsQuery> queryStatistics(){ List<StatisticsQuery> sqList = new ArrayList<StatisticsQuery>(); ResultSet rs = null; PreparedStatement pst = null; Connection conn = null; try { Class.forName(driver); conn = DriverManager.getConnection(url, user, password); StringBuffer sqlStr = new StringBuffer(); sqlStr.append(" select biomarker_type param1, count(geneid) param2 "); sqlStr.append(" from biomarkers "); sqlStr.append(" group by biomarker_type "); pst = conn.prepareStatement(sqlStr.toString()); pst.execute(); rs = pst.getResultSet(); StatisticsQuery sq = null; while(rs.next()){ sq = new StatisticsQuery(); sq.setParam1(rs.getString(1)); sq.setParam2(rs.getString(2)); } } catch (Exception e) { logger.error(e); } finally { try { if(rs != null) rs.close(); if(pst != null) pst.close(); if(conn != null) conn.close(); } catch (SQLException e) { e.printStackTrace(); } } return sqList; }
此处使用的是jdbc连接的数据库,不过这么做还得去读取jdbc配置文件。若用Hibernate连接数据库,执行操作的代码如下:
public List<StatisticsQuery> queryStatistics(){ Session session = getGDSessionFactory().openSession(); List<StatisticsQuery> sqList = new ArrayList<StatisticsQuery>(); StringBuffer sqlStr = new StringBuffer(); sqlStr.append(" select biomarker_type param1, count(geneid) param2 "); sqlStr.append(" from biomarkers "); sqlStr.append(" group by biomarker_type "); SQLQuery query = session.createSQLQuery(sqlStr.toString()); List list = query.list(); StatisticsQuery sq = null; for (Object object : list) { if(object == null) continue; Object[] obj = (Object[])object; sq = new StatisticsQuery(); sq.setParam1(obj[0] == null ? "":obj[0].toString()); sq.setParam2(obj[1].toString()); } return sqList; }
3、渲染到页面,如下:
<rich:dataTable id="searchResultBiomarker" onRowMouseOver="this.style.backgroundColor='#F1F1F1'" onRowMouseOut="this.style.backgroundColor='#{a4jSkin.tableBackgroundColor}'" border="1" value="#{statisticsQueryController.sqList}" var="record" styleClass="table_result" rowKeyVar="i" rowClass='#{i%2 == 1?"spec":"specalt"}'> <rich:column> <f:facet name="header"> <h:outputText value="#{msg.statistics_biomarker_type}" /> </f:facet> <h:outputText value="#{record.param1}" /> </rich:column> <rich:column> <f:facet name="header"> <h:outputText value="#{msg.statistics_no_of_biomarkers}" /> </f:facet> <h:outputText value="#{record.param2}" /> </rich:column> </rich:dataTable>
相关推荐
3. SQL查询优化:在设计数据库时,要考虑SQL查询效率,合理设置索引,避免全表扫描,以提高系统的响应速度。 四、系统功能模块 1. 用户管理:包括班主任的注册、登录、权限管理等功能,确保只有授权的用户才能访问...
Java Web是指使用Java语言进行Web应用程序开发的技术,包括Servlet、JSP、JavaServer Faces(JSF)等技术。动态图表则是指这些Web应用中能够根据实时数据变化而更新的图表,例如饼图、折线图、柱状图等。 动态图表...
5. 报表统计模块:生成各类统计报表,如销售报表、库存分析等。 五、开发流程与工具 开发过程中,通常使用IDE如Eclipse或IntelliJ IDEA进行Java编程,使用Tomcat或WebLogic等应用服务器部署JSP应用。数据库设计和...
然而,由于安全性和性能问题,以及现代浏览器对Applet支持的逐渐淘汰,这一技术已不再推荐使用。 2. **JavaFX**: JavaFX是一个用于创建桌面、Web和移动平台的富客户端应用程序的现代框架。它提供了丰富的图形库和...
2. 数据处理:获取到原始数据后,需要对其进行预处理,例如计算统计值、过滤或分组数据,以便更适于图表显示。 3. 使用JFreeChart创建图表:通过JFreeChart提供的API,开发者可以构建所需的图表类型,设置颜色、...
1. Excel:Microsoft Excel是一种流行的电子表格应用程序,用于数据分析、统计运算和报告创建。在Java中,可以使用Apache POI库来操作Excel文件,包括读取、写入和更新XLS或XLSX格式的文件。你可以创建工作簿、工作...
3. **Web框架支持**:提高对流行Web框架(如JSF、Struts、Spring和WebWork)的支持。 4. **AJAX支持**:增强Portlet与AJAX技术的集成能力。 #### 八、使用WSRP的工作流程 Portlet是可插拔的组件,它们提供了应用...
Struts2是Struts1的升级版,它在原有的基础上增加了更多功能和改进。框架的核心是Action类,它是处理用户请求的中心。当用户通过浏览器发送请求时,Struts2拦截这些请求并将其转发到相应的Action。Action类执行业务...
除了基本的图表功能,JFreeChart 还可用于创建复杂的统计图和金融图表,如甘特图、箱线图、热力图等。 总的来说,JFreeChart 为 Java 开发者提供了一套强大且灵活的工具,用于创建各种类型的图表,无论是简单的...
7. **JSF (JavaServer Faces)**:用于构建用户界面的MVC框架。 8. **CDI (Contexts and Dependency Injection)**:依赖注入框架,简化对象的管理和协作。 9. **JMS (Java Message Service)**:消息传递服务,用于...
Respond.js则是解决IE6-8浏览器不支持CSS3媒体查询的问题,使响应式设计在老版本IE上也能正常工作。 Underscore.js是一个轻量级的工具库,提供了与Prototype类似的函数,但避免了对原生JavaScript对象的污染。...
这两个jar包提供了JSF的核心功能,包括视图构建、事件处理和组件渲染,用于SSH2中的用户界面开发。 7. **log4j-1.2.9.jar**: Log4j是Apache的日志记录框架,提供灵活的日志记录功能。在SSH2中,它用于记录应用程序...
9. **学习资源**:源代码作为学习材料,可以帮助开发者深入理解JFreeChart的内部工作原理,如何创建和定制图表,并解决实际项目中的问题。 10. **示例代码的重要性**:源代码中的示例涵盖了各种图表类型和功能,...
这包括各种内置组件如数据表(DataTable)、图表(Chart)、日历(Calendar)、对话框(Dialog)等的使用方法,以及它们如何与 JSF 生态系统集成。 2. **定制组件**:PrimeFaces 允许开发者自定义组件以满足特定...
首先,JavaWeb是Java平台上的一个关键概念,它涵盖了Java Servlet、JavaServer Pages(JSP)、JavaServer Faces(JSF)等技术,用于构建动态、交互式的Web应用。在这个系统中,JavaServlet负责处理HTTP请求,进行...
Contenido 是一个开源的 Web CMS,强调内容和布局的分离,提供用户友好的界面,支持用户区域、统计和 PDF 集成,目前支持 MySQL,未来可能支持更多数据库。 Alfresco 是一款企业级 CMS,采用 Spring、Hibernate、...
在CovidTracker中,View可能包括各种JSP(JavaServer Pages)文件,如`index.jsp`,它们用来渲染页面并显示统计信息。页面布局会根据用户选择的州展示相应的疫情数据。 3. **Controller**:作为Model和View之间的...
目前互联网很多服务如Open API,很多大头公司如Google,Yahoo,Microsoft等都提供了OAUTH认证服务,这些都足以说明OAUTH标准逐渐成为开放资源授权 的标准。 Java的命令行处理类库 JArgs JArgs 是一个 Java 语言用来...
2. **视图(View)**:负责渲染和展示图表,根据模型中的数据生成可视化结果。 3. **控制器(Controller)**:作为模型和视图之间的桥梁,处理用户交互,更新视图以反映模型的变化。 通过这种结构,CEWolf使得...
目前互联网很多服务如Open API,很多大头公司如Google,Yahoo,Microsoft等都提供了OAUTH认证服务,这些都足以说明OAUTH标准逐渐成为开放资源授权 的标准。 Java的命令行处理类库 JArgs JArgs 是一个 Java 语言用来...