天天看点

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;