`
gg19861207
  • 浏览: 182882 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

一个数据库查询方法(可以动态设置查询参数,设置查询条件),很巧妙的组合sql语句

SQL 
阅读更多

public <T> QueryResult<T> getScrollData(Class<T> entityClass,String wherejpql,Object[] queryParams,
int firstindex, int maxResult, LinkedHashMap<String, String> orderby) {
//for(int i = 0;i<queryParams.length;i++){
//System.out.println("=================queryParams is " + i +queryParams[i]);
//}
String entityName = getEntityName(entityClass);
QueryResult qr = new QueryResult<T>();
String sql = "select o from "+entityName+" o " + (wherejpql==null?"":"where " + wherejpql) + buildOrderby(orderby);
Query query = em.createQuery(sql);
setQueryParams(query,queryParams);
System.out.println("-------------------in DaoSupport :sql is:" + sql);
/**
* 1:查询的时候第一步查询到的都是数据表里所有的记录
* 2:再用query.setFirstResult(firstindex).setMaxResults(maxResult)
* 方法来设置要显示的首记录(即从哪一条开始显示)和要显示的记录条数
* 3:然后保存相关数据,方便前台页面显示
*/
if(firstindex != -1 && maxResult != -1){
query.setFirstResult(firstindex).setMaxResults(maxResult);
}


qr.setResultList(query.getResultList());
/**
* 这里的记录数不是要显示的记录有多少条,而是数据表里一共有多少条记录
*/
query = em.createQuery("select count(o) from "+entityName+" o " + (wherejpql==null?"":"where " + wherejpql));

setQueryParams(query,queryParams);

qr.setTotalrecord((Long)query.getSingleResult());
return qr;
}

/**
* 构建order by 语句
* orderby 语句格式:order by key1 asc,key2 asc
* @param orderby
* @return
*/
protected String buildOrderby(LinkedHashMap<String, String> orderby){
StringBuffer orderbySql = new StringBuffer("");
if(orderby !=null && orderby.size()>0){
orderbySql.append(" order by ");
//order by key1 desc,key2 asc
for(String key:orderby.keySet()){
orderbySql.append(key).append(" ").append(orderby.get(key)).append(",");
}
orderbySql.deleteCharAt(orderbySql.length() - 1);
}
return orderbySql.toString();
}

/**
* 给where语句设置参数值
* wherejpql 语句格式:where o.property=?1,o.property=?2。
* @param query
* @param params
*/
protected void setQueryParams(Query query,Object[] params){
if(params != null && params.length > 0){
for(int i=0;i<params.length;i++){
//System.out.println("i+1 = " + (i+1) + " params[i] " + params[i] );
query.setParameter(i+1, params[i]);
}
}
}

QueryResult.java:

package com.itcast.util;

import java.util.List;

public class QueryResult<T>{
private List<T> resultList;
private long totalrecord;
public List<T> getResultList() {
return resultList;
}
public void setResultList(List<T> resultList) {
this.resultList = resultList;
}
public long getTotalrecord() {
return totalrecord;
}
public void setTotalrecord(long totalrecord) {
this.totalrecord = totalrecord;
}

}

分享到:
评论

相关推荐

    mybatis多条件查询处理方案(查询条件为数据库字段非传递参数).pdf

    在MyBatis中,多条件查询是常见的需求,特别是在数据检索和过滤时。通常,我们会根据传递的参数来决定查询的条件。然而,有时我们可能需要根据数据库字段本身的状态来进行查询,而不是依赖于传递的参数。针对这种...

    50种方法巧妙优化你的SQL Server数据库

    《50种方法巧妙优化你的SQL Server数据库》 SQL Server数据库优化是提升系统性能的关键环节。以下是一些针对SQL Server数据库优化的有效策略: 1. **建立和优化索引**:索引是加速查询的关键,特别是在大数据量的...

    50种方法巧妙优化你的SQLServer数据库

    4. **索引优化**:根据查询条件创建合适的索引,注意填充因子的设置。小字段更适合建立索引,避免对有有限值的字段创建单一索引。 5. **虚拟内存配置**:根据服务器上运行的服务调整虚拟内存大小,SQL Server 2000...

    从sql数据库中导出图片

    3. **动态SQL构建**:根据输入参数动态构建SQL查询语句,然后使用`sp_executesql`执行这些SQL语句,从而实现数据的动态查询与导出。 4. **扩展存储过程调用**:调用`xp_cmdshell`扩展存储过程来执行BCP命令和删除...

    Sql查询语句大集合

    4. "精妙SQL语句命令大全.txt":此文件可能包含了一系列巧妙的SQL命令示例,可能包括一些不常用但非常实用的功能,如聚合函数、条件运算、嵌套查询等。 5. "数据库多表连接查询详解 .txt":专门针对多表连接查询...

    巧妙运用WinCC V6.0 VBS 脚本实现对 SQL Server数据库的存储与查寻

    VBS脚本可以用来定义SQL语句,将现场采集的信号和参数自动存储到数据库中。例如,当生产线上的Andon请求(如设备故障、质量检查异常)发生时,VBS脚本可以立即触发,将事件详情写入数据库,包括时间戳、设备ID、事件...

    在查询语句中使用条件判断

    在IT领域,特别是数据库管理与查询技术中,...通过巧妙地组合`CASE`语句和其他SQL功能,可以构建出既高效又灵活的数据处理方案。在实际项目中,合理运用`CASE`语句能够极大地提升SQL查询的能力,更好地支持业务需求。

    周公解梦数据库sql

    在周公解梦数据库中,SQL语句可以用来查询特定梦境的解释,例如,查询“梦见蛇”的含义,可以编写如下SQL语句: ```sql SELECT 解释 FROM 解梦表 WHERE 梦境 = '蛇'; ``` 数据库的设计至关重要。在“周公解梦”...

    一种MySQL数据库SQL递归查询的研究与实现.pdf

    这种实现方法虽然比直接的递归查询语句复杂,但它避免了存储过程和函数的使用,使得整个查询过程都在SQL层面完成,更符合数据库查询的逻辑,并且可以在单条SQL语句中实现,提高了代码的简洁性和可维护性。...

    用VBS通过SQL语句查找多个文本内重复的QQ号

    使用VBS,通过ODBC SQL的select语句,查找多个文本内重复的QQ...该资源展示了一种巧妙的方法:将文本当做数据库的表,使用VBS数据库表执行SQL语句。用简单的SQL语句,实现了多个文本复杂逻辑的查询、插入、新建的操作。

    50种方法巧妙优化SQL Server数据库

    SQL Server数据库优化是一个复杂而重要的任务,涉及到许多层面的调整和改进。以下是对标题和描述中提到的一些关键知识点的详细解释: 1. **索引**:索引是提高查询速度的关键,缺乏索引或未正确使用索引可能导致...

    利用标准的SQL语句实现查询记录分页

    总之,使用标准SQL语句进行分页查询是数据库开发中的一项基本技能。通过巧妙地利用子查询,我们可以实现灵活而高效的分页功能,满足各种应用场景的需求。不过,实际应用中还需要根据数据库的特性和数据规模来选择最...

    SqlServer 巧妙解决多条件组合查询

    在SQL Server中,多条件组合查询是常见...在这个例子中,通过设置默认值和逻辑判断,我们成功地创建了一个通用的查询方法,可以适应各种查询需求。这种方法在实际的数据库开发中非常实用,尤其是在面对复杂查询条件时。

    sql语句 妙用,各种sql语句 的详细 用法 与讲解

    SQL语句是数据库管理的核心工具,用于数据查询、更新、删除和插入等操作。本篇文章主要探讨了SQL语句的一些巧妙应用和详细用法。 首先,我们来看一下SQL语句的执行方式。基本的SQL语句可以直接通过`EXEC`或`EXECUTE...

    50种方法巧妙优化你的SQL-Server数据库.doc

    综上所述,SQL Server数据库的优化是一个系统性工程,涉及索引、I/O、硬件配置、查询优化等多个层面。通过综合运用上述方法,可以显著提升SQL Server的查询性能,减少数据库瓶颈,确保系统的高效运行。

    悼念的经典sql查询语句

    10. **存储过程和触发器**:存储过程是一组预编译的SQL语句,可封装成一个可重用的单元,而触发器则是在特定数据库操作(如INSERT, UPDATE, DELETE)发生时自动执行的代码。 通过学习和实践这些经典的SQL查询语句,...

Global site tag (gtag.js) - Google Analytics