天天看點

Hibernate查詢之SQL查詢,查詢結果用new新對象的方式接受,hql查詢,通過SQL查詢的結果傳回到一個實體中,查詢不同表中内容,并将查到的不同表中的内容放到List中



package com.ucap.netcheck.dao.impl;

import java.util.arraylist;

import java.util.list;

import org.hibernate.query;

import org.hibernate.session;

import org.hibernate.sessionfactory;

import org.springframework.beans.factory.annotation.autowired;

import org.springframework.stereotype.repository;

import org.springframework.transaction.annotation.transactional;

import com.ucap.netcheck.combination.beans.mainpageresultcombinationbean;

import com.ucap.netcheck.common.page;

import com.ucap.netcheck.common.dao.basedao;

import com.ucap.netcheck.dao.isinglerejectdao;

import com.ucap.netcheck.entity.mainpagescanfail;

import com.ucap.netcheck.entity.mainpagescanresult;

import com.ucap.netcheck.exception.daoexception;

/**

 * @title: checkmainpageresultdaoimpl.java

 * @package com.ucap.netcheck.dao.impl

 * @description:

 * @author

 * @date 2015-4-8 下午5:04:34

 * @version v1.0

 */

@repository

@transactional

public class singlerejectdaoimpl extends basedao implements isinglerejectdao {

 @autowired

 private sessionfactory sessionfactory;

 @suppresswarnings("unchecked")

 public mainpagescanresult querymainpagescanresultunique(object... params) {

  try {

   string sql = "from mainpagescanresult m "

     + "where m.errorpercent > 5.0 " + "and m.inneruuid =? "

     + "and m.taskid =? ";

   session session = sessionfactory.getcurrentsession();

   list<mainpagescanresult> list = session.createquery(sql)

        .setparameter(0,(string)params[0])

        .setparameter(1,(integer)params[1])

        .list();

   if (!list.isempty()) {

    return list.get(0);

   }

  } catch (exception e) {

   e.printstacktrace();

  }

  return null;

 }

  /**

   * querymainpagescanfailbyid(通過這個方法實作查找首頁掃描失敗的結果)

   *

   * @title: querymainpagescanfailbyid

   * @description:

   * @param @param pageno

   * @param @param pagerow

   * @param @param id

   * @param @return    設定檔案

   * @return page    傳回類型

   * @throws

   */

 public page querymainpagescanfailbyid(int pageno, int pagerow,integer id) {

   list<object> params = new arraylist<object>();

   string hql = "from mainpagescanfail m where m.mainpagescanid = ? ";

   params.add(id);

   page page = this.querybypage(hql, pageno, pagerow, params);

   return page;

   throw new daoexception("分頁查詢所有->error", e);

 public list<mainpagescanfail> querymainpagescanfaillistbyid(integer id) {

   string hql = "from mainpagescanfail m where m.mainpagescanid =:mainpagescanid ";

   list<mainpagescanfail> list = sessionfactory.getcurrentsession()

    .createquery(hql)

    .setparameter("mainpagescanid", id)

    .list();

   return list;

 /**

  * querymainpagescaneresultstatistics(這個方法實作對這個表的資訊進行統計)

  *

  * @title: querymainpagescaneresultstatistics

  * @description: 這個方法實作對這個表的資訊進行統計

  * @param @param objs

  * @param @return 設定檔案

  * @return page<mainpagescanresult> 傳回類型

  * @throws

  */

 public mainpageresultcombinationbean querymainpagescaneresultstatistics(

   object... objs) {

   string hql = "select new com.ucap.netcheck.combination.beans.mainpageresultcombinationbean("

     + " min(m.taskstarttime),max(m.taskendtime),count(m.inneruuid),max(m.totalscannum),max(m.failnum)) "

     + " from "

     + mainpagescanresult.class.getsimplename()

     + " m where m.inneruuid = ? " + " and m.taskid = ? ";

   list<mainpageresultcombinationbean> list = sessionfactory

     .getcurrentsession().createquery(hql)

     .setparameter(0, (string) objs[0]).setparameter(1, objs[1])

     .list();

   return (!list.isempty() ? (mainpageresultcombinationbean) list

     .get(0) : null);

 @suppresswarnings({ "rawtypes", "unchecked"})

 @override

 public page querymainpageupdateresultbypage(int pageno, int pagerow,

   stringbuilder sql = new stringbuilder(

       "select " +

       "cm.id as id," +

       "cm.task_id as taskid," +

       "cm.inneruuid as inneruuid," +

       "cm.checksystaskid as checksystaskid," +

          "cm.url as url," +

          "cm.first_channel as firstchannel," +

          "cm.second_channel as secondchannel," +

          "cm.chanel_name as chanelname," +

          "cm.title as title," +

          "cm.img_url as imgurl," +

          "cm.lastmodifytime as lastmodifytime, " +

          "cm.show_time as showtime," +

          "cm.scantime as scantime," +

          "cm.isreject as isreject " +

    "from cpu_mp as cm " +

    "where cm.inneruuid =? " +

    "and cm.task_id =? " +

    "and cm.isreject = 1 "

   );

   query query = sessionfactory

     .getcurrentsession()

     .createsqlquery(sql.tostring())

     .setparameter(0, (string) objs[0])

     .setparameter(1, (integer)objs[1]);

   page page = new page();

            page.setpagenum(pageno);

            page.setnumperpage(pagerow);

            page.setallrows(query.list().size());

            int allpages = page.getallrows() / page.getnumperpage();

   if (page.getallrows() % page.getnumperpage() == 0) {

    page.setallpages(allpages); // 總頁數

   } else {

    page.setallpages(allpages + 1); // 總頁數

            query.setfirstresult((pageno - 1) * pagerow);

            query.setmaxresults(pagerow);

            //集合

            list<object[]> list = query.list();

            page.setrecordlist(list);

            return page;

 @suppresswarnings({"unchecked"})

 public list<object[]> querymainpageupdateresultbycondition(object... objs) {

            return list;

}

========================================================

通過sql将查詢的結果傳回到一個bean中

 @suppresswarnings({ "unchecked" })

 @transactional(propagation = propagation.required)

 public page<communityactivity> queryjoinedactivity(int pageno, int pagerow,

   int userid) {

  // 分頁實體

  page<communityactivity> page = new page<communityactivity>();

   page.setpagenum(pageno);

   page.setnumperpage(pagerow);

   string sql = "select ac.* from dm_commuinty_activity"

     + " ac where ac.id in(select t.activity_id from dm_activity_user t "

     + " where t.user_id = " + userid + ")";

   // 查詢

   query query = session.createsqlquery(sql).addentity(

     communityactivity.class);

   // 總記錄數

   page.setallrows(query.list().size());

   // page.setallrows(((number) query.uniqueresult()).intvalue());

   query.setfirstresult((pageno - 1) * pagerow);

   query.setmaxresults(pagerow);

   // 集合

   page.setrecordlist(query.list());

   int allpages = page.getallrows() / page.getnumperpage();

  } catch (exception ex) {

   throw new daoexception("分頁查詢所有->error", ex);

  return page;

===========================

查詢不同表中内容,并将查到的不同表中的内容放到list中

@override

 public list getattranddeadresult(int taskid, int targetid) {

  session session = sessionfactory.getcurrentsession();

//  string sql = "select d.depth, p.imgurl, d.point, d.scantime, "

//    + "d.title, d.url, p.parenttitle, p.parenturl,d.id,d.urltype,d.code "

//    + "from deadurlresult d, checkresult c, deadurl_parent_info p "

//    + "where d.taskid=c.taskid and d.id=p.deadid and d.taskid=:tid and c.targetid=:tgid "

//    + "and (d.urltype=0 or d.urltype=1 or d.urltype=2 or d.urltype=3 "

//    + "or d.urltype=4 or d.urltype=7 or d.urltype=8) ";

  string sql = "select d.depth, p.imgurl, d.point, d.scantime, d.title, d.url, p.parenttitle, p.parenturl,d.id,d.urltype,d.code " +

      "from " +

      "(select * from deadurlresult  c where " +

      "c.taskid=:tid " +

      "and (c.urltype=0 or c.urltype=1 or c.urltype=2 or c.urltype=3 " +

      "or c.urltype=4 or c.urltype=7 or c.urltype=8)" +

      ") d left join  deadurl_parent_info p on  d.id=p.deadid";

  query sqlquery = session.createsqlquery(sql);

  sqlquery.setparameter("tid", taskid);

  //sqlquery.setparameter("tgid", targetid);

  return sqlquery.list();

=================================================================

  * 通過這方法實作爆粗廣告日志資訊

 public list<advertisestatisticresult> gainstatisticresult(integer adpageid,

   date startdate, date enddate) {

   list<advertisestatisticresult> dataresults = new arraylist<advertisestatisticresult>();

   string sql = "select t2.ad_position_name,count(t.ad_pos_id) " +

       "from dm_advertise_access_log t,dm_advertise_position t2 " +

       "where t.adpageid = ? " +

       "and t2.id = t.ad_pos_id " +

       "group by t2.ad_position_name,t.ad_pos_id";

   list list = sessionfactory.getcurrentsession().createsqlquery(sql)

     .setparameter(0, adpageid)

     //.setparameter(1, startdate)

     //.setparameter(2, enddate)

    for (int i = 0; i < list.size(); i++) {

     advertisestatisticresult asr = new advertisestatisticresult();

     asr.setname((string)((object[])list.get(i))[0]);

     asr.sety(integer.valueof((((object[])list.get(i))[1]).tostring()).intvalue());     //這裡的y是int類型的,這裡不能直接通過(integer)的方式進行強制轉換得到,否則出現

                                                                                                                            //java.lang.classcastexception: java.math.bigdecimal cannot be cast to java.lang.integer

     dataresults.add(asr);

    }

   return dataresults;

==========================================================================================================

查詢的内容轉成制定的實體:

// 附件

@transactional(propagation = propagation.required)

public list<affixbean> getaffix() {

session session = sessionfactory.getcurrentsession();

string hql = "select a.nrid,a.file_type,a.file_path,a.file_name from dm_affix a";

query query = session.createsqlquery(hql)

.addscalar("nrid", standardbasictypes.integer)

.addscalar("file_type", standardbasictypes.string)

.addscalar("file_path", standardbasictypes.string)

.addscalar("file_name", standardbasictypes.string)

.setresulttransformer(transformers.aliastobean(affixbean.class));

list<affixbean> list = query.list();

return list;

//affixbean的内容如下:

package com.kuman.cartoon.common.bean;

public class affixbean {

* 内容id

*/

private integer nrid;

     * 檔案路徑

     */

    private string file_path;

    /**

     * 檔案類型

    private string file_type;

     * 檔案名

    private string file_name;

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

return file_type;

public void setfile_type(string file_type) {

this.file_type = file_type;

public string getfile_name() {

return file_name;

public void setfile_name(string file_name) {

this.file_name = file_name;