(十五)条件查询

条件查询信息列表

1、  在baseDao、baseDaoImpl中编写和实现findObjects(String hql, List<Object> parameters)

2、  在service、serviceImpl中调用baseDao中的条件查询方法

3、  在action中用service中新写的findObjects(String hql, List<Object> parameters)进行条件查询

4、  添加listUI.jsp中的查询方法。

优化查询-查询工具类QueryHelper

设计一个查询工具类QueryHelper,里面需要对将要查询的hql和参数进行组装,然后将此对象传递给service运用并返回结果。该工具类主要方法有:

①   QueryHelper(Class clazz, String alias) 构造器,主要组装from 子句

②   addCondition(String condition, Object... param) 组装where子句

③   addOrderByProperty(String property, String order) 组装order by 子句

④   getListQueryHql() 返回查询列表的hql

⑤   getCountQueryHql() 返回统计总记录数的hql

⑥   getParameters() 返回参数列表

具体类实现:

 1 package cn.itcast.core.utils;
 2
 3 import java.util.ArrayList;
 4 import java.util.List;
 5
 6 public class QueryHelper {
 7
 8     //from 子句
 9     private String fromClause = "";
10     //where 子句
11     private String whereClause = "";
12     //order by 子句
13     private String orderByClause = "";
14
15     //where 子句中?对应的参数值
16     private List<Object> parameters;
17
18     public static String ORDER_BY_ASC = "ASC";//升序
19     public static String ORDER_BY_DESC = "DESC";//降序
20
21     /**
22      * 利用构造方法构造from子句
23      * @param clazz 实体类
24      * @param alias 别名
25      */
26     public QueryHelper(Class clazz, String alias){
27         fromClause = "FROM " + clazz.getSimpleName() + " " + alias;
28     }
29     /**
30      * 组装where子句
31      * @param condition 条件
32      * @param params 条件中?对应的参数值
33      * @return QueryHelper
34      */
35     public QueryHelper addCondition(String condition, Object...params){
36         if(whereClause.length() > 0){
37             whereClause += " AND " + condition;
38         } else {
39             whereClause = " WHERE " + condition;
40         }
41         if(parameters == null){
42             parameters = new ArrayList<Object>();
43         }
44         for(Object param: params){
45             parameters.add(param);
46         }
47         return this;
48     }
49     /**
50      * 构建order by 子句
51      * @param property 排序的属性
52      * @param order 升序(asc)或是降序(desc)
53      * @return QueryHelper
54      */
55     public QueryHelper addOrderByProperty(String property, String order){
56         if(orderByClause.length() > 0){
57             orderByClause += "," + property + " " + order;
58         } else {
59             orderByClause += " ORDER BY " + property + " " + order;
60         }
61         return this;
62     }
63
64     //返回列表查询hql语句
65     public String getListQueryHql(){
66         return fromClause + whereClause + orderByClause;
67     }
68
69     //返回查询总记录数的hql
70     public String getCountHql(){
71         return "SELECT Count(*) " + fromClause + whereClause;
72     }
73
74     public List<Object> getParameters() {
75         return parameters;
76     }
77 }

利用新的查询工具类QueryHelper在baseDao中新编写一个findObjects(QueryHelper qh)方法进行页面的条件查询。

baseDao

baseDaoImpl

对应的service/serviceImpl也添加此方法提供给action调用。

在对应的action中查询可以使用查询助手进行:

条件回显

1、  条件删除后回显查询条件

当在列表页中,通过条件查询了记录后,并对记录进行了删除,应当在删除后返回查询列表时保留查询条件。

改造action中的查询方法,对中文查询条件进行decode

在配置文件中redirectAction时,对中文参数进行encode:

2、  条件编辑后回显查询条件

当在列表页中,通过条件查询了记录后,并对记录进行了编辑,应当在编辑后返回查询列表时保留查询条件。

此时应当①在跳转到编辑页面的方法中先将列表中的查询条件缓存起来避免被覆盖;②在转发跳转到编辑页面时,在页面中应对缓存起来的条件在页面中暂存避免遗漏查询条件;③当编辑页面提交并保存编辑后,重定向到列表方法之际,应当把原有的查询条件作为参数传递到查询列表方法

时间: 2024-10-05 21:23:37

(十五)条件查询的相关文章

Entity Framework 第十篇 条件查询

业务类中 我们根据条件来动态的查询 创建IQueryable接口 public IQueryable<TEntity> GetQueryable() { IQueryable<TEntity> query = dbContext.Set<TEntity>(); return query; } 为什么创建IQueryable接口?IQueryable会在调用ToList()或者Count()等方法的时候,才回向数据库查询,所以只会向数据库提交一次带条件的查询语句,从而提升

Powershell管理系列(十五)查询最近一个月未登录的AD账号和Exchange账号

-----提供AD\Exchange\Lync\Sharepoint\CRM\SC\O365等微软产品实施及外包,QQ:185426445.电话18666943750 今天听到群里有朋友问,想查询最近1个月未登录的AD账号,我们可以通过如下的Powershell来实现: 需求1.查询OU中所有账号的创建时间\SID\上次修改密码时间\最后一次登录时间 PowerShell查询指定OU中所有账号的创建时间\SID\上次修改密码时间\最后一次登录时间,可以通过如下命令完成:PS C:\Users\a

第三百六十五节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的查询

第三百六十五节,Python分布式爬虫打造搜索引擎Scrapy精讲-elasticsearch(搜索引擎)的查询 elasticsearch(搜索引擎)的查询 elasticsearch是功能非常强大的搜索引擎,使用它的目的就是为了快速的查询到需要的数据 查询分类: 基本查询:使用elasticsearch内置的查询条件进行查询 组合查询:把多个查询条件组合在一起进行复合查询 过滤:查询同时,通过filter条件在不影响打分的情况下筛选数据

万能数据库查询分析器使用技巧之(十五)

--- 6.01版本新增的SQL 执行计划功能 马根峰                   (广东联合电子服务股份有限公司, 广州 510300) 摘要     本文详细地介绍了"万能数据库查询分析器",中文版本<DB 查询分析器>.英文版本<DB Query Analyzer>6.01 中新增的SQL "执行计划"功能.从6.01版本开始,用户可以对要执行的SQL 脚本建立执行计划,在指定的时间来执行这些SQL 脚本.从而一方面可以有效地避

NHibernate系列文章二十五:NHibernate查询之Query Over查询(附程序下载)

摘要 这一篇文章介绍在NHibernate 3.2里引入的Query Over查询,Query Over查询跟Criteria查询类似.首先创建IQueryOver对象,然后通过调用该对象的API函数,进行对象查询.这篇文章使用Query Over重写之前所有的查询. 本篇文章的代码可以到NHibernate查询下载 1.创建IQueryOver对象,返回所有Customer信息 1 public IList<Customer> QueryAllOver() 2 { 3 return Sess

mysql常用基础操作语法(五)--对数据的简单条件查询【命令行模式】

1.单条件查询:select 字段名 from tablename where 条件: 2.简单多条件查询,使用&&或者between and等: 3.is null和is not null查询,这里要注意null不是空字符串不是0: 4.in和not in查询,相当于是用or把in后边的集合元素连起来.注意如果in后边带的集合中存在null,那么不会影响结果,但not in后边集合中有null,就不会查处任何结果,not in也查不出null: 5.like模糊查询(不仅适用字符串):

深入浅出Zabbix 3.0 -- 第十五章 Zabbix 协议与API

今天是六.一儿童节,祝小朋友们节日快乐!发完此文就带我家小朋友出去玩耍了. 第十五章 Zabbix 协议与API 本章将介绍和开发相关的Zabbix协议和API的内容,通过对Zabbix协议和API的深入了解,你可以利用Zabbix协议编写客户端程序并将其嵌入的产品或系统中,并将数据发送到Zabbix server,这在无法安装Zabbixagent等程序的场景(例如专用的嵌入式系统)中非常有用.你也可以利用Zabbix API开发自己的业务系统,或灵活的与现有系统整合集成. 15.1 Zabb

基于Struts2+Hibernate的Criteria多条件查询

Hibernate 定义了CriteriaSpecification接口规范用来完成面向对象的条件查询,Criteria 和 DetachedCriteria 就是CriteriaSpecification的子接口. 在进行本篇的内容之前,我们先来大致说一说Criteria 和 DetachedCriteria 的主要区别: Criteria 和 DetachedCriteria 的创建的形式不一样, Criteria 是在线的,所以它是由 Hibernate Session 进行创建的:而 D

NHibernate 过滤器(第十五篇)

NHibernate 过滤器(第十五篇) NHibernate过滤器相当于定义一个非常类似于类和集合上使用的where子句.ISession 中默认是不启用过滤器的,必须通过ISession.EnableFilter()方法显式的启用. 该方法返回被启用的IFilter的实例.这也支持链式操作. 过滤器主要的配置都在映射文件内完成.来看示例: <?xml version="1.0" encoding="utf-8" ?> <hibernate-ma