检索方法
来源:互联网 发布:房地产数据来源 编辑:程序博客网 时间:2024/06/04 20:39
写一个实体,专门用来简单的关键词检索
package com.boventech.zyk.util;/** * 简单的关键词检索辅助类 (参数都可以为空)<BR> * page 页码,pageSize 分页大小, limit 最大结果数, queryName 检索列,queryWord 检索关键词, orderColumn 排序列,orderType 排序类型 */public class SimpleQuery { public static final int UNPAGE = -99; /** * 页码 (page=UNPAGE表示不分页) */ private Integer page = 1; /** * 分页大小 */ private Integer pageSize; /** * 最大结果数 (不分页时有效) */ private Integer limit; /** * 检索列名 (不指定时为全文检索) */ private String queryColumn; /** * 检索关键词 */ private String queryWord; /** * 排序列名 */ private String orderColumn; /** * 排序类别 */ private String orderType; public Integer getPage() { if (page <= 0) { setPage(1); } return page; } public void setPage(Integer page) { this.page = page; } public Integer getPageSize() { return pageSize; } public void setPageSize(Integer pageSize) { this.pageSize = pageSize; } public Integer getLimit() { return limit; } public void setLimit(Integer limit) { this.limit = limit; } public String getQueryColumn() { return queryColumn; } public void setQueryColumn(String queryColumn) { this.queryColumn = queryColumn; } public String getQueryWord() { return queryWord; } public void setQueryWord(String queryWord) { this.queryWord = queryWord; } public String getOrderColumn() { return orderColumn; } public void setOrderColumn(String orderColumn) { this.orderColumn = orderColumn; } public String getOrderType() { return orderType; } public void setOrderType(String orderType) { this.orderType = orderType; } public void filter() { this.setQueryColumn(doFilter(this.getQueryColumn())); this.setOrderColumn(doFilter(this.getOrderColumn())); this.setOrderType(doFilter(this.getOrderType())); } public String getWord() { return queryWord == null ? "%%" : "%" + queryWord + "%"; } private String doFilter(String rawStr) { String str = rawStr; if (str != null && !"".equals(str)) { str = str.replaceAll("<[^>]*>", ""); str = str.replaceAll("\"", ""); str = str.replaceAll("'", ""); str = str.replaceAll("\\s", ""); } return str; }}controller中这么写,正好可以接收检索的关键字的值:
@RequestMapping(method = GET) public String index(SimpleQuery query, Model model) { List<Resource> resources = resourceService.listBySimpleQuery(query); model.addAttribute("resources", resources); model.addAttribute("query", query); return "/XX"; }
DAOIMPL:
@SuppressWarnings("unchecked") @Override public List<Resource> listBySimpleQuery(SimpleQuery query) { String word = query.getWord(); Integer pageSize = getPageSize(query.getPageSize()); String whereClause = " where r.name like ?1 or r.tags like ?1 or r.description like ?1 or r.remark like ?1 "; String countQuery = "select count(distinct r.resId) from Resource r" + whereClause; String queryString = "select * from (select * from " + Constants.DB_TABLE_PREFIX + "resource r" + whereClause + "order by r.createTime desc) t group by t.resId"; int total = executeCountQuery(countQuery, word); Query listQuery = getEntityManager().createNativeQuery(queryString, Resource.class); setParameter(listQuery, word); listQuery.setFirstResult((query.getPage() - 1) * pageSize); listQuery.setMaxResults(pageSize); List<Resource> result = listQuery.getResultList(); return (List<Resource>) PaginateSupportUtil.pagingList(result, total, query.getPage(), pageSize); }
0 0
- 检索方法
- 数组检索方法汇总
- Hibernate的检索方法
- 文献检索方法
- 论文检索方法
- 网站产品检索实现方法
- Linux下检索文件方法
- hash 图像检索方法汇总
- Oracle全文检索配置方法
- 系统的文献检索方法
- hash 图像检索方法汇总
- 哈希快速检索之三种海明空间中的检索方法
- 检索
- 检索
- 检索
- 检索
- 检索
- 信息检索及信息过滤方法概述
- SharePoint 2013 图文开发系列之InfoPath入门
- CentOS下Hyrax安装及配置
- Properties
- 【汇编语言/底层开发】11、标识寄存器
- 选出有行连接(row chain)或者是行迁移(row migeration)的表
- 检索方法
- 应用框架的设计与实现.net平台--应用框架解析(框架分层)
- ZOJ Problem Set - 1037 Gridland
- 我的2014--大局观、匆忙、蓄势
- 2.13 子数组的最大乘积
- Tomcat 双向证书配置
- 游戏中如何实现GameCenter的应用
- 电脑文件整理思路
- 堆和栈的区别