这是原创文章,转载请注明javaeye的picksun所作,谢谢~
Hibernate使用的criteria语法过于复杂,使用的很多类及常量需要特别引入,
因此本人设计一个小型的条件查询,满足基本的查询需要,可以通过map实现多表查询、“group by”等
类似于PCI的插拔式结构,条件一般都是可以随意插拔的。
当然你可以并联,就想历史上大名鼎鼎的"巫毒"显卡一样,
把两个条件并联起来("or" 关联或者"between"条件的时候使用,可以使用括号)
实现一个语法,一般是通过拼接,完成对单追加条件(可以在后面追加条件),
where条件可以在conList不断添加,完全不加也可以,这样就实现了sql查询的”万法归一“:
既不用写一堆重载的findByProperties,也不用自己拼接SQL(或者HQL)
List<SqlConditionGroup> conList = new ArrayList<SqlConditionGroup>();
PageControl pageControl = PageControl.getQueryOnlyInstance();
//PageControl pageControl = PageControl.getPageEnableInstance(start, limit);
pageControl .setOrder("order by school desc, dataContent asc");
//pageControl .groupBy("group by xxx");
conList.add(new SqlConditionGroup("school","1","=","and"));
conList.add(new SqlConditionGroup("dataContent","%"+bean.getDataContent()+"%","like","and"));
conList.add(new SqlConditionGroup("school",Arrays.asList(new String[]{"1","2"}),"in","and"));
conList.add(new SqlConditionGroup("(dataValue",new Double(1.0),"between",""));
conList.add(new SqlConditionGroup("and",new Double(2.0),"",")and"));
conList.add(new SqlConditionGroup("schoolId",null,"in (select schoolId from tableA)","and"));
conList.add(new SqlConditionGroup("((fDate", beg_date,"=","and"));
conList.add(new SqlConditionGroup("fTime", end_time,"<=",")or("));
conList.add(new SqlConditionGroup("fDate", end_date,"=","and"));
conList.add(new SqlConditionGroup("fTime", end_time,"<=","))"));
//使用SQL
List<PDayData> day_list = curService.findByNativeCondition(pageControl, conList, "select * from PDayData ", PDayData.class);//PDayData.class,Map.class都可以
//使用HQL
List<PDayData> day_list =
curService.findByCondition(pageControl, conList);
简单说明:SqlConditionGroup的结构,sign 默认为"=",type默认为"and"
/**
* Sql参数查询条件
*
* @param name 属性名
* @param value 值,可以是Array,List或者单值
* @param sign 符号,如>,<,=,like,<>,in,isnull等等
* @param type 连接类型,and或or,视情况可加括号
*/
public SqlConditionGroup(String name, Object value, String sign, String type) {
super();
this.name = name;
this.value = value;
this.sign = sign;
this.type = type;
}
- 大小: 5.3 KB
分享到:
相关推荐
《SQL Server 2008商业智能完美解决方案》,高清扫描。
本文将深入探讨如何在Kettle中实现动态SQL查询,这对于处理复杂的数据库操作和数据迁移至关重要。我们将讨论问号占位符和命名参数这两种方法,并分析它们的区别。 首先,让我们理解什么是动态SQL查询。在传统的SQL...
SQL Server 2008 商业智能完美解决方案(2/4) 资源共享、一律免费
资料备份:SQL Server 2008 商业智能完美解决方案(二部之一)
SQL注入安全问题解决方案-JAVA SQL注入安全问题解决方案-JAVA
SQL2005 233错误 解决方案 SQL2005 233错误 解决方案
SQL Server 2008商业智能完美解决方案 2/3 SQL Server 2008 2010 商业智能完美解决方案 作者:兰吉特(Lynn Langit) 出版社:人民邮电出版社; 第1版 (2010年8月1日) ISBN:7115231117, 9787115231116 页码:545 ------...
SQL Server查询分析器是Microsoft SQL Server数据库管理系统中的一个重要工具,主要用于编写、执行和测试SQL语句,以及查看查询结果。在Windows 10操作系统(x64)环境下,选择一个兼容且功能强大的查询分析器至关...
sql server 2008 商务智能 BI解决方案。
用户自己定义动态组织sql查询条件,对于用户来说相当方便的啦。可以自由选择查询字段、条件条件、条件值,选择与或关系,包括括号优先的使用。根据查询字段不同,查询条件值的动态改变,如日期控件、下拉框、可输入...
SQL Server 2008 商业智能完美解决方案(1/4) 资源共享,一律免费
在“在线SQL查询”这个场景中,ExtJS 被用来构建一个用户界面,允许用户在浏览器中直接执行SQL查询,这对于数据库管理或数据分析来说非常方便。 `Ext.ux.window.VisualSQLQueryBuilder` 是ExtJS的一个扩展组件,...
目录 致谢 引言 第1章 T-SQL查询和编程基础 1.1 理论背景 1.2 SQL SERVER体系结构 ... 1.3 创建表和定义数据完整性 ...第2章 单表查询 ... 10.6 动态SQL 10.7 例程 10.8 错误处理 10.9 总结
1 SQL Server 2012 高可用性解决方案.pptx
SQL Injection和CSS Hole入侵解决方案研究.pdf
对于同一个查询的命名sql,列或者表名都是动态的,如有些时候命名sql为select custID,custName from cust,有些时候是select custID from cust,这时候列名是变量。EOS中默认是不支持的,会报列错误。 解决方案...
收集的SQL Server2005连接问题各种情况的解决方案 为不太了解SQL Server 的同学提供帮助
这个是国外人使用ABAP写的一个类似一SQL Server的查询分析器,它能够直接运行ABAP的OPEN SQL,由于SE11或者是SE16都只能对一表进行查询,但很多的时候我们需要对多个表进行联合查询,这时就可以发挥很大作用了,希望...
解决SQL2005远程连接错误解决方案,出现这个错误一般有两种情况,一种是在打开打开SQL Server 2005时弹出的,另一种是在应用程序连接SQL Server 2005时出现的.归纳了一下。。。