`
laiseeme
  • 浏览: 124751 次
  • 性别: Icon_minigender_2
  • 来自: 沈阳
社区版块
存档分类
最新评论

多表同结构的Native sql查询

阅读更多
查询中相同结构的表
比如销售纪录的表
一天生成一个或者别的方式生成,结构相同,我们可以把他作为一个表做一个mapping和一个bean
比如销售信息SellInfo
在dao中用native sql统计查询(普通的查询我就不说了)
    /**
     * 单店统计查询
     * @param tableName		查询表名
     * @param sellInfo		查询例子
     * @param startTime		开始时间
     * @param finishTime	结束时间
     * @param sumBy 		按什么求和
     * @param groupBy		按什么分组
     * @return 数量 项目
     */
    public List queOneShopGrp(String tableName,SellInfo sellInfo,Date startTime,Date finishTime,String sumBy,String groupBy)
    {
    	Session session = this.getSession();
    	StringBuffer sql = new StringBuffer();
    	sql.append("select sum(S.");
    	sql.append(sumBy);
    	sql.append(") as sumMoney,S.");
    	sql.append(groupBy);
    	sql.append(" as foodName from ");
    	sql.append(tableName);
    	sql.append(" S where");
    	if(sellInfo!=null)
    	{
    		sql.append(this.getExampleStringS(sellInfo));
    	}
    	sql.append(" S.sellTime between :startTime and :finishTime ");
    	sql.append("group by S.");
    	sql.append(groupBy);
    	System.out.println(sql.toString());
    	Query query = session.createSQLQuery(sql.toString())
    		.addScalar("sumMoney", Hibernate.DOUBLE)
    		.addScalar("foodName", Hibernate.STRING)
			.setDate("startTime", startTime)
			.setDate("finishTime", finishTime);
    	return query.list();
    }
分享到:
评论
8 楼 antonyup_2006 2007-11-07  
数据表的整合,定时去把一些表整合到一个表或几个表,可以考虑用job,定时去后台整合,而代码里只要操作整合好后的表就可以了.这样不用在代码里去整合!
7 楼 movingboy 2007-11-07  
看起来数据量很大啊,得每天一表~~~
那你再根据常用的统计时段为每个时段建一个表,比如每月一表,该表的数据由每月各天的数据sum而来(sum的工作可以考虑在不繁忙的适当的时候干),这样查询/统计该月的数据只需要访问该表
真要提供高度灵活的查询时段供用户选择(比如查询/统计任意两天之间的销量),你可有苦头可吃了~~~
6 楼 抛出异常的爱 2007-11-06  
用这种方式的话,小心sql注入
5 楼 laiseeme 2007-07-13  
比如说,我要查5天的数据,可以把这5天对应的5个表full union成一个视图,这样就能同时检索这5个表,象使用一个表一样,但是有个问题,在使用sql2000的时候有个限制,最多可以操作260个表......
4 楼 laiseeme 2007-07-13  
另外一种解决方式是使用视图,把你要检索的数据的表在检索前生成一个view,这个wiew就叫一个名字
比如我这个叫SellInfo,对这个视图进行映射,这样你就不用使用native sql进行查询了,可以直接使用QBC检索,当然了,要把
cache.use_query_cache设置成false,否则可能cache中的数据和视图中的数据不一致
3 楼 laiseeme 2007-07-13  
在使用native sql做普通查询的时候,是不是lasy就不起作用了,因为我设置了lazy="true"的字段还是在检索的时候一起被取出来放bean里面了
2 楼 laiseeme 2007-07-13  
拼出来的sql语句是
select sum(S.smallTotal) as sumMoney,S.foodName as foodName from XC_2007_0240_001 S where S.foodId = '001' and S.sellTime between ? and ? group by S.foodName

这里要注意的是
#     Query query = session.createSQLQuery(sql.toString()) 
#         .addScalar("sumMoney", Hibernate.DOUBLE) 
#         .addScalar("foodName", Hibernate.STRING) 
这里,一定对你每个要查询的起个别名,而且对每个数据要要加上.addScalar,要不然他会将数据淫塞到bean里面
1 楼 laiseeme 2007-07-13  
还有生成where句子的函数
    /**
     * 生成根据例子类的where子句
     * @param sellInfo
     * @return
     */
    public String getExampleStringS(SellInfo sellInfo)
    {
    	StringBuffer sql = new StringBuffer();
    	
    	if(sellInfo.getUserName()!=null)
    	{
    		sql.append(" S.userName = '");
    		sql.append(sellInfo.getUserName());
    		sql.append("' and");
    	}
    	
    	if(sellInfo.getFoodId()!=null)
    	{
    		sql.append(" S.foodId = '");
    		sql.append(sellInfo.getFoodId());
    		sql.append("' and");
    	}
    	
    	if(sellInfo.getClassId()!=null)
    	{
    		sql.append(" S.classId = '");
    		sql.append(sellInfo.getClassId());
    		sql.append("' and");
    	}
    	
    	if(sellInfo.getPosId()!=null)
    	{
    		sql.append(" S.posId = '");
    		sql.append(sellInfo.getPosId());
    		sql.append("' and");
    	}
    	//去掉最后一个and
    	//return sql.substring(0, (sql.length()-3));
    	return sql.toString();
    }

相关推荐

    Hibernate之原生Native SQL查询

    然而,尽管Hibernate提供了强大的HQL(Hibernate Query Language)和Criteria API,但在处理某些特定的、复杂的SQL查询时,可能无法满足需求,这时就需要用到“原生的Native SQL查询”。 Native SQL查询允许我们...

    Navicat 实现同步sqlserver表结构到mysql操作手册1

    如果你只想同步表结构,而不希望导入数据,可以在选择条件部分设置相应的查询条件,例如`WHERE 1=0`,这样可以确保没有数据被导入,只会同步结构。 6. **正式导入表结构**: 最后,确认所有设置无误后,点击“开始...

    数据库连接客户端SQL Server 2008 Native Client 32&64

    3. **XML支持**:SQL Server 2008 Native Client增强了对XML数据类型的支持,允许直接在SQL查询中处理XML数据,无需将其转换为其他格式。这简化了处理复杂数据结构的过程。 4. **错误和警告信息**:与旧版相比,...

    SQL Server 2005 对Native XML Web 服务的支持

    SQL Server 2005是微软推出的一款关系型数据库管理系统,它在支持XML方面具有显著的进步,特别是对Native XML Web服务的集成。本篇文章将深入探讨SQL Server 2005如何提供对Native XML Web服务的支持,以及这些特性...

    hibernate多表联合查询

    本文将重点介绍如何使用HQL和Native SQL来实现多表联合查询。 #### 三、案例背景 假设我们有一个简单的业务场景:需要统计某个时间段内顾客的消费总额。为了完成这个任务,我们需要从`customer`表和`charge`表中...

    SQLToolbelt 2017年最新官网版

    SQL Compare Pro  比较和同步SQL Server数据库结构 SQL Data Compare Pro  比较和同步SQL Server...SQL Object Level Recovery Native 从SQL Server备份恢复数据库对象 SQL Search  在SQL Server数据库结构中搜索

    abap 关于SQL语句的性能

    在ABAP中,SQL查询的性能受到多种因素的影响,包括数据量的大小、索引的使用、查询结构的复杂度等。特别是在处理大量数据时,一个小小的性能瓶颈就可能导致整个系统的响应时间显著增加。因此,掌握如何编写高效的SQL...

    React Native的同步存储_Synchronous_storage_for_React_Native.

    React Native的同步存储为开发者提供了便捷的本地数据管理方式,从简单的键值对存储到结构化的SQLite数据库,选择合适的库可以根据应用的需求和数据规模。正确使用同步存储,可以提升用户体验,同时也要注意性能优化...

    数据库表结构导出word文档.zip

    2. SQL查询:执行SQL语句获取表结构信息。 3. 模板引擎:FreeMarker或其他类似的模板引擎,用于动态生成Word文档。 4. 文档转换:将数据和模板结合,生成Word格式的文档。 5. 配置管理:通过ini或properties文件管理...

    SQL ToolBelt 2018最新版 分卷1

    SQL Compare Pro  比较和同步SQL Server数据库结构 SQL Data Compare Pro  比较和同步SQL Server...SQL Object Level Recovery Native 从SQL Server备份恢复数据库对象 SQL Search  在SQL Server数据库结构中搜索

    SQL ToolBelt 2018最新版 分卷3 勿单独下载

    SQL Compare Pro  比较和同步SQL Server数据库结构 SQL Data Compare Pro  比较和同步SQL Server...SQL Object Level Recovery Native 从SQL Server备份恢复数据库对象 SQL Search  在SQL Server数据库结构中搜索

    SQL ToolBelt 2018最新版 分卷2

    SQL Compare Pro  比较和同步SQL Server数据库结构 SQL Data Compare Pro  比较和同步SQL Server...SQL Object Level Recovery Native 从SQL Server备份恢复数据库对象 SQL Search  在SQL Server数据库结构中搜索

    native-sql-engine:适用于Spark SQL的本机SQL Engine插件,具有矢量化SIMD优化

    Spark本机SQL引擎用于Spark SQL的本机引擎,具有矢量化SIMD优化在线文件您可以在找到所有Native SQL Engine文档。介绍 Spark SQL与基于行的结构化数据配合得很好。 它使用WholeStageCodeGen通过Java JIT代码来提高...

    《sql入门使用与高级使用篇》

    SQL,全称Structured Query Language,即结构化查询语言,是用于管理和处理关系数据库的标准语言。这份资料旨在帮助初学者快速掌握SQL的基础,并进一步提升至高级使用技巧。 SQL的特点主要包括其简洁性、易学性和...

    SQL Server Native Client 10-sqlncli-10-驱动

    SQL Server Native Client 10是Microsoft为SQL Server 2008和2008 R2设计的一个数据库访问接口,它结合了ODBC(Open Database Connectivity)和OLE DB(Object Linking and Embedding, Database)的功能,提供了一种...

    SqlServer默认数据库

    数据库中的表涵盖了客户、订单、产品、供应商等多个业务方面,是学习SQL查询、报表创建以及了解关系数据库设计的理想实践平台。 2. **Pubs数据库**:同样是由Microsoft创建的一个示例数据库,主要用于展示SQL ...

    MS_SQL_Server_2008_Native_Client.zip

    MS SQL Server 2008 Native Client是微软为SQL Server 2008推出的一款原生数据库访问客户端,它提供了高效的数据访问接口,使得应用程序能够直接与SQL Server进行通信,实现了高速的数据读写和查询操作。这个压缩包...

    SQL数据库编辑器

    4. **数据库结构同步**:编辑器可以比较数据库之间的结构差异,并提供同步功能,确保多个环境的数据库结构一致性。 5. **版本控制集成**:对于团队开发,编辑器可能集成Git或其他版本控制系统,方便代码版本管理和...

    使用kepserver连接SQL数据库.rar

    5. **定义SQL查询**:在KepServer中,需要为每个需要读取的数据库表创建一个“SQL项”。在“项”菜单下,选择“新建”,然后选择“SQL项”。在这里,编写SQL SELECT语句来获取表数据。例如,`SELECT * FROM ...

Global site tag (gtag.js) - Google Analytics