天天看點

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.common.dao.basedao;

import com.ucap.netcheck.dao.iindexdao;

import com.ucap.netcheck.entity.checkservice;

import com.ucap.netcheck.entity.siteservice;

import com.ucap.netcheck.entity.taskstatus;

import com.ucap.netcheck.exception.daoexception;

 * @title: indexdaoimpl.java

 * @date 2015-4-6 下午6:37:29

@repository

@transactional

public class indexdaoimpl extends basedao implements iindexdao {

  * 通過條件查詢分頁資訊

  * params[0]:表示檢查名稱

  * params[1]:表示首頁網址

  * params[2]:表示網站辨別碼

  * params[3]:表示目前狀态

  * params[4]:表示的是使用者id

 @suppresswarnings("unchecked")

   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;

 * @title: indexcombinationbean.java

 * @package com.ucap.netcheck.combination.beans

 * @description: 對應site表,task表,siteservice,checkservice表中的内容,供首頁使用

 * @author tuzuoquan

 * @date 2015-4-6 下午6:54:50

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) {

 public string geturl() {

  return url;

 public void seturl(string url) {

 public string getsitecode() {

  return sitecode;

 public void setsitecode(string sitecode) {

 public taskstatus gettaskstatus() {

  return taskstatus;

 public void settaskstatus(taskstatus taskstatus) {

 public int gettaskrunnum() {

  return taskrunnum;

 public void settaskrunnum(int taskrunnum) {

 public int gettaskopennum() {

  return taskopennum;

 public void settaskopennum(int taskopennum) {

 public int getuserid() {

  return userid;

 public void setuserid(int 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) {

   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;