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带条件分页查询并且把结果显示到一个对象的集里面的解决方案的更多相关文章

  1. thinkphp 带条件分页查询

    thinkphp 带条件分页查询:form表单传值时候,method='get'. 用 get 传值

  2. springboot+thymeleaf+pageHelper带条件分页查询

    html层 <div> <a class="num"><b th:text="'共 '+ ${result.resultMap['pages ...

  3. 【java】spring-data-jpa 集成hibernate实现多条件分页查询

    初次接触spring-data-jpa,实现多条件分页查询. 基础环境 Spring Boot+spring-data-jpa+hibernate+mysql 1.接口 要继承这个接口,这个接口提供了 ...

  4. ASPNETCOREAPI 跨域处理 SQL 语句拼接 多条件分页查询 ASPNET CORE 核心 通过依赖注入(注入服务)

    ASPNETCOREAPI 跨域处理 AspNetCoreApi 跨域处理 如果咱们有处理过MV5 跨域问题这个问题也不大. (1)为什么会出现跨域问题:  浏览器安全限制了前端脚本跨站点的访问资源, ...

  5. 项目一:第四天 1、快递员的条件分页查询-noSession,条件查询 2、快递员删除(逻辑删除) 3、基于Apache POI实现批量导入区域数据 a)Jquery OCUpload上传文件插件使用 b)Apache POI读取excel文件数据

    1. 快递员的条件分页查询-noSession,条件查询 2. 快递员删除(逻辑删除) 3. 基于Apache POI实现批量导入区域数据 a) Jquery OCUpload上传文件插件使用 b) ...

  6. asp.net mvc多条件+分页查询解决方案

    开发环境vs2010 css:bootstrap js:jquery bootstrap paginator 原先只是想做个mvc的分页,但是一般的数据展现都需要检索条件,而且是多个条件,所以就变成了 ...

  7. 【SQL】Oracle分页查询的三种方法

    [SQL]Oracle分页查询的三种方法 采用伪列 rownum 查询前10条记录 ? 1 2 3 4 5 6 7 8 9 10 11 [sql] select * from t_user t whe ...

  8. 使用传入的总记录数实现一条sql语句完成分页查询

    使用传入的总记录数实现一条sql语句完成分页查询     问题:在传统的分页查询的实现中不可避免的需要两条sql语句,一条用于查询数据一条用于查询总记录数.如下面的实际代码所示: Img1 当然如果使 ...

  9. SpringBoot-07:SpringBoot整合PageHelper做多条件分页查询

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 本篇博客讲述如何在SpringBoot中整合PageHelper,如何实现带多个条件,以及PageInfo中的 ...

随机推荐

  1. input中v-model和value不能同时调用时解决方案

    <input type="text" v-model="keyWord" value="请输入地名地址" > 当使用如上代码时, ...

  2. 查询优化--小表驱动大表(In,Exists区别)

    Mysql 系列文章主页 =============== 本文将以真实例子来讲解小表驱动大表(In,Exists区别) 1 准备数据 1.1 创建表.函数.存储过程 参照  这篇(调用函数和存储过程批 ...

  3. flask的自带logger和celery的自带logger的使用

    在celery和flask框架中都有自带的logger使用方法.下面记录一下相关的使用. flask中使用logger flask中的app对象FLASK()自带了logger方法,其调用的方式为: ...

  4. spring的 @Scheduled的cron表达式

    网上太多说的多,但却没什么用的文章了 序号 说明 是否必填 允许填写的值         允许的通配符1       秒    是                0-59 ,             ...

  5. pm2进阶使用

    启用集群模式 只需要在启动应用时带上i参数 pm2 start app.js -i max max:意味着PM2将自动检测可用的CPU数量和运行多个进程可以在负载均衡模式(但是不推荐使用) 或者使用j ...

  6. 安装redis 执行make命令时报错解决方法

    一.未安装GCC 解决方法:执行yum install gcc-c++命令安装GCC,完成后再次执行make命令 yum install gcc-c++ Linux无法连接网络 http://www. ...

  7. javaweb面试题

    1.Tomcat的优化经验 答:去掉对web.xml的监视,把JSP提前编辑成Servlet:有富余物理内存的情况下,加大Tomcat使用的JVM内存. 2.什么是Servlet? 答:可以从两个方面 ...

  8. 浏览器本地下拉框查询选择js

    首先需要引用jquery-1.7.2.js. 页面下拉框有对应的数据,此下拉框的查询将不与服务器交互.本地下拉框查询.暂不支持通过键盘上下按键和enter键控制 // JavaScript Docum ...

  9. Codeforces Round #396(Div. 2) A. Mahmoud and Longest Uncommon Subsequence

    [题意概述] 找两个字符串的最长不公共子串. [题目分析] 两个字符串的最长不公共子串就应该是其中一个字符串本身,那么判断两个字符串是否相等,如果相等,那么肯定没有公共子串,输出"-1&qu ...

  10. ubuntu初始化python3+postgresql+uwsgi+nginx+django

    一. postgresql 数据库 安装 apt-get update apt-get install postgresql 进入psql客户端 sudo -u postgres psql 创建数据库 ...