`
E路之吕
  • 浏览: 15689 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JSF多表查询渲染问题(统计查询)

    博客分类:
  • JSF
阅读更多

开发环境:

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>

 

 

分享到:
评论

相关推荐

    基于JavaEE的班主任管理系统_JSP网站设计_SQLServer数据库设计.rar

    3. SQL查询优化:在设计数据库时,要考虑SQL查询效率,合理设置索引,避免全表扫描,以提高系统的响应速度。 四、系统功能模块 1. 用户管理:包括班主任的注册、登录、权限管理等功能,确保只有授权的用户才能访问...

    Java Web动态图表编程 最新版本20120213

    Java Web是指使用Java语言进行Web应用程序开发的技术,包括Servlet、JSP、JavaServer Faces(JSF)等技术。动态图表则是指这些Web应用中能够根据实时数据变化而更新的图表,例如饼图、折线图、柱状图等。 动态图表...

    基于JavaEE的药品管理系统_JSP网站设计_SQLServer数据库设计.rar

    5. 报表统计模块:生成各类统计报表,如销售报表、库存分析等。 五、开发流程与工具 开发过程中,通常使用IDE如Eclipse或IntelliJ IDEA进行Java编程,使用Tomcat或WebLogic等应用服务器部署JSP应用。数据库设计和...

    WEB画图(java)

    然而,由于安全性和性能问题,以及现代浏览器对Applet支持的逐渐淘汰,这一技术已不再推荐使用。 2. **JavaFX**: JavaFX是一个用于创建桌面、Web和移动平台的富客户端应用程序的现代框架。它提供了丰富的图形库和...

    baobiao.rar_java web开发_jfreechart_报表 系统_报表开发系统_报表系统

    2. 数据处理:获取到原始数据后,需要对其进行预处理,例如计算统计值、过滤或分组数据,以便更适于图表显示。 3. 使用JFreeChart创建图表:通过JFreeChart提供的API,开发者可以构建所需的图表类型,设置颜色、...

    报表导出excel word pdf html

    1. Excel:Microsoft Excel是一种流行的电子表格应用程序,用于数据分析、统计运算和报告创建。在Java中,可以使用Apache POI库来操作Excel文件,包括读取、写入和更新XLS或XLSX格式的文件。你可以创建工作簿、工作...

    WSRP & JSR 168 Portlets Overview.pdf

    3. **Web框架支持**:提高对流行Web框架(如JSF、Struts、Spring和WebWork)的支持。 4. **AJAX支持**:增强Portlet与AJAX技术的集成能力。 #### 八、使用WSRP的工作流程 Portlet是可插拔的组件,它们提供了应用...

    BBS 网络论坛 Struts2

    Struts2是Struts1的升级版,它在原有的基础上增加了更多功能和改进。框架的核心是Action类,它是处理用户请求的中心。当用户通过浏览器发送请求时,Struts2拦截这些请求并将其转发到相应的Action。Action类执行业务...

    java中的报表(jfreeChart原创)

    除了基本的图表功能,JFreeChart 还可用于创建复杂的统计图和金融图表,如甘特图、箱线图、热力图等。 总的来说,JFreeChart 为 Java 开发者提供了一套强大且灵活的工具,用于创建各种类型的图表,无论是简单的...

    毕设java ee cms系统.zip

    7. **JSF (JavaServer Faces)**:用于构建用户界面的MVC框架。 8. **CDI (Contexts and Dependency Injection)**:依赖注入框架,简化对象的管理和协作。 9. **JMS (Java Message Service)**:消息传递服务,用于...

    19个很有用的 JavaScript库推荐

    Respond.js则是解决IE6-8浏览器不支持CSS3媒体查询的问题,使响应式设计在老版本IE上也能正常工作。 Underscore.js是一个轻量级的工具库,提供了与Prototype类似的函数,但避免了对原生JavaScript对象的污染。...

    SSH2框架所用到的jar包4

    这两个jar包提供了JSF的核心功能,包括视图构建、事件处理和组件渲染,用于SSH2中的用户界面开发。 7. **log4j-1.2.9.jar**: Log4j是Apache的日志记录框架,提供灵活的日志记录功能。在SSH2中,它用于记录应用程序...

    JfreeChart 1.0.10 demo 源代码

    9. **学习资源**:源代码作为学习材料,可以帮助开发者深入理解JFreeChart的内部工作原理,如何创建和定制图表,并解决实际项目中的问题。 10. **示例代码的重要性**:源代码中的示例涵盖了各种图表类型和功能,...

    primefaces-978-1-7839-8324-7:学习 PrimeFaces 扩展开发

    这包括各种内置组件如数据表(DataTable)、图表(Chart)、日历(Calendar)、对话框(Dialog)等的使用方法,以及它们如何与 JSF 生态系统集成。 2. **定制组件**:PrimeFaces 允许开发者自定义组件以满足特定...

    基于javaWeb+jsp+Mysql+Tomcat+前端超市订单管理系统.zip

    首先,JavaWeb是Java平台上的一个关键概念,它涵盖了Java Servlet、JavaServer Pages(JSP)、JavaServer Faces(JSF)等技术,用于构建动态、交互式的Web应用。在这个系统中,JavaServlet负责处理HTTP请求,进行...

    内容管理系统CMS20091214.doc

    Contenido 是一个开源的 Web CMS,强调内容和布局的分离,提供用户友好的界面,支持用户区域、统计和 PDF 集成,目前支持 MySQL,未来可能支持更多数据库。 Alfresco 是一款企业级 CMS,采用 Spring、Hibernate、...

    CovidTracker

    在CovidTracker中,View可能包括各种JSP(JavaServer Pages)文件,如`index.jsp`,它们用来渲染页面并显示统计信息。页面布局会根据用户选择的州展示相应的疫情数据。 3. **Controller**:作为Model和View之间的...

    java开源包1

    目前互联网很多服务如Open API,很多大头公司如Google,Yahoo,Microsoft等都提供了OAUTH认证服务,这些都足以说明OAUTH标准逐渐成为开放资源授权 的标准。 Java的命令行处理类库 JArgs JArgs 是一个 Java 语言用来...

    cewolf

    2. **视图(View)**:负责渲染和展示图表,根据模型中的数据生成可视化结果。 3. **控制器(Controller)**:作为模型和视图之间的桥梁,处理用户交互,更新视图以反映模型的变化。 通过这种结构,CEWolf使得...

    java开源包11

    目前互联网很多服务如Open API,很多大头公司如Google,Yahoo,Microsoft等都提供了OAUTH认证服务,这些都足以说明OAUTH标准逐渐成为开放资源授权 的标准。 Java的命令行处理类库 JArgs JArgs 是一个 Java 语言用来...

Global site tag (gtag.js) - Google Analytics