Hibernate查询,返回new对象(注意这个新定义的类要有构造函数),使用sql带条件分页查询并且把结果显示到一个对象的集里面的解决方案
IIndexDao
package com.ucap.netcheck.dao;
import com.ucap.netcheck.combination.beans.IndexCombinationBean;
import com.ucap.netcheck.common.Page;
import com.ucap.netcheck.common.dao.GenericDao;
import com.ucap.netcheck.entity.Site;
/**
* @Title: IIndexDao.java
* @Package com.ucap.netcheck.index.dao
* @Description:
* @author Zuoquan Tu
* @date 2015-4-6 下午6:35:31
* @version V1.0
*/
public interface IIndexDao {
/**
* queryJoinedActivity(通过这个方法实现获取首页的分页信息)
*
* @Title: queryJoinedActivity
* @Description: 通过这个方法实现获取首页的分页信息
* @param @param pageNo 要查找的页数
* @param @param pageRow 每页显示记录数
* @param @param params 查找条件
* @param @return 设定文件
* @return Page<IndexCombinationBean> 返回首页制定页面的结果集的结果集
* @throws
*/
public Page<IndexCombinationBean> queryIndexInfoByPage(
int pageNo,int pageRow, Object... params);
}
IndexDaoImpl
package com.ucap.netcheck.dao.impl;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import com.ucap.netcheck.combination.beans.IndexCombinationBean;
import com.ucap.netcheck.common.Page;
import com.ucap.netcheck.common.dao.BaseDAO;
import com.ucap.netcheck.dao.IIndexDao;
import com.ucap.netcheck.entity.CheckService;
import com.ucap.netcheck.entity.Site;
import com.ucap.netcheck.entity.SiteService;
import com.ucap.netcheck.entity.TaskStatus;
import com.ucap.netcheck.exception.DAOException;
/**
* @Title: IndexDaoImpl.java
* @Package com.ucap.netcheck.index.dao
* @Description:
* @author Zuoquan Tu
* @date 2015-4-6 下午6:37:29
* @version V1.0
*/
@Repository
@Transactional
public class IndexDaoImpl extends BaseDAO implements IIndexDao {
/**
* 通过条件查询分页信息
* params[0]:表示检查名称
* params[1]:表示首页网址
* params[2]:表示网站标识码
* params[3]:表示当前状态
* params[4]:表示的是用户id
*/
@SuppressWarnings("unchecked")
public Page<IndexCombinationBean> queryIndexInfoByPage(
int pageNo,int pageRow, Object... params) {
try {
//Map<String, Object> map = new HashMap<String, Object>();
List<Object> lists = new ArrayList<Object>();
String sql = "SELECT new com.ucap.netcheck.combination.beans.IndexCombinationBean(" +
"s.wzmc,s.url,s.siteCode,cs.taskStatus,cs.taskRunNum," +
"cs.taskOpenNum,cs.userId) " +
"FROM " + Site.class.getSimpleName() + " s,"
+ CheckService.class.getSimpleName() + " cs,"
+ SiteService.class.getSimpleName() + " ss " +
"WHERE ss.siteCode = s.siteCode AND ss.servId = cs.servId ";
//通过网站名称进行查询
if (StringUtils.isNotBlank((String)params[0])) {
sql += " AND s.wzmc like ? ";
lists.add("%" + (String)params[0] + "%");
}
if (StringUtils.isNotBlank((String)params[1])) {
sql += " AND s.url like ? ";
lists.add("%" + (String)params[1] + "%");
}
if (StringUtils.isNotBlank((String)params[2])) {
sql += " AND s.siteCode like ? ";
lists.add("%" + (String)params[2] + "%");
}
if (null != (TaskStatus)params[3]) {
//sql += " AND cs.taskStatus like ? ";
//lists.add("%" + (String)params[3] + "%");
sql += " AND cs.taskStatus =?";
lists.add((TaskStatus)params[3]);
}
if (null != (Integer)params[4]) {
sql += " AND cs.userId =? ";
lists.add((Integer)params[4]);
}
Page<IndexCombinationBean> pages = this.queryByPage(sql, pageNo, pageRow, lists);
//System.out.println("pages.getRecordList().size() = " + pages.getRecordList().size());
return pages;
} catch (Exception ex) {
throw new DAOException("分页查询所有->ERROR", ex);
}
}
}
IndexCombinationBean
package com.ucap.netcheck.combination.beans;
import com.ucap.netcheck.entity.TaskStatus;
/**
* @Title: IndexCombinationBean.java
* @Package com.ucap.netcheck.combination.beans
* @Description: 对应site表,task表,SiteService,CheckService表中的内容,供首页使用
* @author Tuzuoquan
* @date 2015-4-6 下午6:54:50
* @version V1.0
*/
public class IndexCombinationBean {
/**
* 网站名称
*/
private String wzmc;
/**
* 首页地址
*/
private String url;
/**
* 网站标识码,对应task表中的uuid
*/
private String siteCode;
/**
* 任务状态
*/
private TaskStatus taskStatus;
/**
* 任务执行了的次数
*/
private int taskRunNum;
/**
* 任务开通总次数
*/
private int taskOpenNum;
/**
* 用户id
*/
private int userId;
public IndexCombinationBean(String wzmc, String url, String siteCode,
TaskStatus taskStatus, int taskRunNum, int taskOpenNum, int userId) {
this.wzmc = wzmc;
this.url = url;
this.siteCode = siteCode;
this.taskStatus = taskStatus;
this.taskRunNum = taskRunNum;
this.taskOpenNum = taskOpenNum;
this.userId = userId;
}
public String getWzmc() {
return wzmc;
}
public void setWzmc(String wzmc) {
this.wzmc = wzmc;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getSiteCode() {
return siteCode;
}
public void setSiteCode(String siteCode) {
this.siteCode = siteCode;
}
public TaskStatus getTaskStatus() {
return taskStatus;
}
public void setTaskStatus(TaskStatus taskStatus) {
this.taskStatus = taskStatus;
}
public int getTaskRunNum() {
return taskRunNum;
}
public void setTaskRunNum(int taskRunNum) {
this.taskRunNum = taskRunNum;
}
public int getTaskOpenNum() {
return taskOpenNum;
}
public void setTaskOpenNum(int taskOpenNum) {
this.taskOpenNum = taskOpenNum;
}
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
}
=====================================================================
要转换成的对象:
package com.kuman.cartoon.entity.admin;
/**
* 用于分类导航部分的显示
* @author toto
*/
public class CategoryNavigationBean {
private Integer id;
/**
* 内容ID
*/
private Integer nrid;
/**
* 封面
*/
private String cover;
/**
* 文件路径+文件名称,在附件表中
*/
private String file_path;
/**
* 文件名,在附件表中
*/
private String file_name;
/**
* 名称(标题)
*/
private String mc;
/**
* 作者
*/
private String zz;
/**
* 类型
*/
private String type;
/**
* 采集日期(时间)
*/
private String cj_date;
/**
* 序号
*/
private int porder;
/**
* 排行类型
*/
private int categoryCycle;
public String getCover() {
return cover;
}
public void setCover(String cover) {
this.cover = cover;
}
public Integer getNrid() {
return nrid;
}
public void setNrid(Integer nrid) {
this.nrid = nrid;
}
public String getFile_path() {
return file_path;
}
public void setFile_path(String file_path) {
this.file_path = file_path;
}
public String getFile_name() {
return file_name;
}
public void setFile_name(String file_name) {
this.file_name = file_name;
}
public String getMc() {
return mc;
}
public void setMc(String mc) {
this.mc = mc;
}
public String getZz() {
return zz;
}
public void setZz(String zz) {
this.zz = zz;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getCj_date() {
return cj_date;
}
public void setCj_date(String cj_date) {
this.cj_date = cj_date;
}
public int getPorder() {
return porder;
}
public void setPorder(int porder) {
this.porder = porder;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public int getCategoryCycle() {
return categoryCycle;
}
public void setCategoryCycle(int categoryCycle) {
this.categoryCycle = categoryCycle;
}
}
分页查询部分的代码:
/**
* 按照条件查找到分类导航所需的信息
*/
@Override
@Transactional(propagation = Propagation.REQUIRED)
public Page findCategoryNavigation(int page, int rows, String mc,
Integer type, Integer categoryCycle) {
try {
List<Object> params = new ArrayList<Object>();
String sql = "select t.id,c.nrid,a.file_path || '/' || a.file_name as cover," +
"a.file_path,a.file_name,c.mc,c.zz,c.type,c.cj_date,t.porder,t.category_cycle as categoryCycle " +
"from DM_CATEGORY_NAVIGATION t,DM_CONTENT c,DM_AFFIX a " +
"where c.nrid = t.content_id " +
"and a.nrid = c.nrid " +
"and a.nrid = t.content_id " +
"and a.file_type = 'HZHB_YLTS' ";
//标题
if (StringUtils.isNotBlank(mc)) {
sql += "and c.mc like ? ";
params.add("%" + mc + "%");
}
//类型
if (null != type) {
sql += "and c.type = ? ";
params.add(type);
}
//排行类型:1.日,2.周,3.月
if (null != categoryCycle) {
sql += "and t.category_cycle = ? ";
params.add(categoryCycle);
}
sql += "order by t.porder desc";
SQLQuery query = sessionFactory.getCurrentSession().createSQLQuery(sql);
for (int i = 0; i < params.size(); i++) {
query = (SQLQuery) query.setParameter(i, params.get(i));
}
query.addScalar("id",StandardBasicTypes.INTEGER)
.addScalar("nrid", StandardBasicTypes.INTEGER)
.addScalar("cover",StandardBasicTypes.STRING)
.addScalar("file_path",StandardBasicTypes.STRING)
.addScalar("file_name",StandardBasicTypes.STRING)
.addScalar("mc",StandardBasicTypes.STRING)
.addScalar("zz", StandardBasicTypes.STRING)
.addScalar("type", StandardBasicTypes.STRING)
.addScalar("cj_date",StandardBasicTypes.STRING)
.addScalar("porder", StandardBasicTypes.INTEGER)
.addScalar("categoryCycle",StandardBasicTypes.INTEGER)
.setResultTransformer(Transformers.aliasToBean(CategoryNavigationBean.class));
Page pageInfo = new Page();
pageInfo.setPageNum(page);
pageInfo.setNumPerPage(rows);
pageInfo.setAllRows(query.list().size());
query.setFirstResult((page - 1) * rows);
query.setMaxResults(rows);
pageInfo.setRecordList(query.list());
int allPages = pageInfo.getAllRows() / pageInfo.getNumPerPage();
if (pageInfo.getAllRows() % pageInfo.getNumPerPage() == 0) {
pageInfo.setAllPages(allPages);
} else {
//总页数
pageInfo.setAllPages(allPages + 1);
}
return pageInfo;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
Hibernate查询,返回new对象(注意这个新定义的类要有构造函数),使用sql带条件分页查询并且把结果显示到一个对象的集里面的解决方案的更多相关文章
- thinkphp 带条件分页查询
thinkphp 带条件分页查询:form表单传值时候,method='get'. 用 get 传值
- springboot+thymeleaf+pageHelper带条件分页查询
html层 <div> <a class="num"><b th:text="'共 '+ ${result.resultMap['pages ...
- 【java】spring-data-jpa 集成hibernate实现多条件分页查询
初次接触spring-data-jpa,实现多条件分页查询. 基础环境 Spring Boot+spring-data-jpa+hibernate+mysql 1.接口 要继承这个接口,这个接口提供了 ...
- ASPNETCOREAPI 跨域处理 SQL 语句拼接 多条件分页查询 ASPNET CORE 核心 通过依赖注入(注入服务)
ASPNETCOREAPI 跨域处理 AspNetCoreApi 跨域处理 如果咱们有处理过MV5 跨域问题这个问题也不大. (1)为什么会出现跨域问题: 浏览器安全限制了前端脚本跨站点的访问资源, ...
- 项目一:第四天 1、快递员的条件分页查询-noSession,条件查询 2、快递员删除(逻辑删除) 3、基于Apache POI实现批量导入区域数据 a)Jquery OCUpload上传文件插件使用 b)Apache POI读取excel文件数据
1. 快递员的条件分页查询-noSession,条件查询 2. 快递员删除(逻辑删除) 3. 基于Apache POI实现批量导入区域数据 a) Jquery OCUpload上传文件插件使用 b) ...
- asp.net mvc多条件+分页查询解决方案
开发环境vs2010 css:bootstrap js:jquery bootstrap paginator 原先只是想做个mvc的分页,但是一般的数据展现都需要检索条件,而且是多个条件,所以就变成了 ...
- 【SQL】Oracle分页查询的三种方法
[SQL]Oracle分页查询的三种方法 采用伪列 rownum 查询前10条记录 ? 1 2 3 4 5 6 7 8 9 10 11 [sql] select * from t_user t whe ...
- 使用传入的总记录数实现一条sql语句完成分页查询
使用传入的总记录数实现一条sql语句完成分页查询 问题:在传统的分页查询的实现中不可避免的需要两条sql语句,一条用于查询数据一条用于查询总记录数.如下面的实际代码所示: Img1 当然如果使 ...
- SpringBoot-07:SpringBoot整合PageHelper做多条件分页查询
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 本篇博客讲述如何在SpringBoot中整合PageHelper,如何实现带多个条件,以及PageInfo中的 ...
随机推荐
- 位运算n & (n-1)的妙用
本文转自:http://blog.csdn.net/zheng0518/article/details/8882394 按位与的知识 n&(n-1)作用:将n的二进制表示中的最低位为1的改为0 ...
- JVM Class详解之一
首先看Class中包含哪些信息简单的说所有Java文件中有的信息class文件都有,编译器帮我们将java文件转化成了JVM能看懂的class格式而已 Class 概述 Class文件是一组以8位字节 ...
- python--ftp服务器(pyftpdlib)
# -*- coding: utf-8 -*-# @Time : 2018/4/11 16:47# @Author : liuxiaobing# @File : test2.py# @Software ...
- PHP 常用函数集合
PHP is_numeric() 函数 由 陈 创建, 最后一次修改 2016-12-02 定义和用法 is_numeric() - 检测变量是否为数字或数字字符串 语法 bool is_numeri ...
- li标签中list-style-image如何居中
使用list-style-image设置了一个列表项的小图标时,一直不能让图标居中的显示. 解决办法是:使用ul li的backgrou-image(背景图片)来设置. 代码如下: ul li{ he ...
- Go 语言范围(Range)
Go 语言中 range 关键字用于for循环中迭代数组(array).切片(slice).链表(channel)或集合(map)的元素.在数组和切片中它返回元素的索引值,在集合中返回 key-val ...
- linux和android开发链接
1.Tracy Mcgrady的专栏冰山一角:linux和Android底层开发,主要是mtk系列点击打开链接 2.郁闷Wednesday:嵌入式linux 单片机 android,点击打开链接 3. ...
- 微信小程序基础之在微信上显示和体验小程序?
随着小程序正式上线,用户现在可以通过二维码.搜索等方式体验到开发者们开发的小程序了. 用户只要将微信更新至最新版本,体验过小程序后,便可在发现页面看到小程序TAB,但微信并不会通过这个地方向用户推荐小 ...
- 微信自定义菜单url默认80端口问题解决
微信自定义菜单url默认80端口的,但是有些服务器上可能配置了多个tomcat.或者是刚好你服务器上80端口被占用了.在这样的情况下,我们可以通过如下方式解决: 首先安装apache,关于apache ...
- iOS开发基础之开发证书的说明和发布
1.首先通过钥匙串访问--证书助理--从证书颁发机构请求证书--填写证书信息(邮箱,常用名称,存储到磁盘)--存储为(自定义名称.certSigningReuqest,简称CSR文件,只是为了提交到苹 ...