HQL代码笔记整理

来源:互联网 发布:重庆知行卫生学校电话 编辑:程序博客网 时间:2024/05/16 03:29

测试类代码:

  @Test

  publicvoid testSelectMySelf(){

    Stringhql="select newNewsBean(n.newsid,n.newstitle,n.author) from NewsBean as n";

    Queryquery=session.createQuery(hql);//import org.hibernate.Query

    List<NewsBean>list=query.list();

 

    for(NewsBeannewsBean:list){

      System.out.println("自定义id:"+newsBean.getNewsid());

      System.out.println("自定义newstitle:"+newsBean.getNewstitle());

      System.out.println("自定义author:"+newsBean.getAuthor());//通过别名来获取

    }

  }

 

 

NewsBean实体类必须添加构造函数代码,否则报错:

public NewsBean(intnewsid, String newstitle, String author) {

    super();

    this.newsid = newsid;

    this.newstitle = newstitle;

    this.author = author;

  }

持久化类中无参构造方法的必要性

String hql=

" from NewsBean as n";

默认去调用默认的构造函数

 

String hql=

"select newNewsBean(n.newsid,n.newstitle,n.author) from NewsBean as n";

必须去调用自定义的,要添加上取什么字段,添加什么函数



Distinct返回不重复的查询结果

相同没有意义的,去掉重复的元素。

 

测试代码:

@Test

   publicvoid testNoDistinct(){

      Stringhql="select  n.typename from NewstypeBean as n";//查询类型名称,重复的省却

      Queryquery=session.createQuery(hql);//import org.hibernate.Query

      List<Object>list=query.list();

      for(Object newsBean:list){

         System.out.println("typename:"+newsBean);

      }

   }

有重复的项:



在String hql="select distinct n.typename fromNewstypeBean as n";//查询类型名称,重复的省却



Where子句  :比较运算

代码如下:

   @Test

   public void testWhere1(){

      Stringhql="from UsersBean as n wheren.userleval>0";//查询类型名称,重复的省却

      Queryquery=session.createQuery(hql);//import org.hibernate.Query

      List<Object>list=query.list();

      for(Object newsBean:list){

         System.out.println(newsBean);

      }

   }

 

(一)Null值运算

String hql="from UsersBean as nwhere n.userleval is null(is not null)";

String hql="from UsersBean as nwhere n.userleval = null(!= null)";

 

范围运算:

(二)判断属性值

(1)Not in(列表)

存在:返回true

不存在:返回false

(1)      not between 值1 and 值2

 

String hql="from NewstypeBeanas n where n.typeid in(1,2)";

String hql="from NewstypeBeanas n where n.typeid not in(1,2)";

 

(三)字符串模式匹配

(1) 通过字符串关键字匹配  like关键字

(2) %任何字母(下划线后不可以有空格否则没有结果显示)

Stringhql="from NewstypeBean as n where n.typename like '%娱_'";

(3)%完整的名称%

String hql="from NewstypeBeanas n where n.typename like '%军事%'";

 

(四)逻辑运算

(1)and(逻辑与)、or(逻辑或)

Stringhql="from NewstypeBean as n where n.typeid=1 and n.typename like '%娱乐%'";

(2)not(逻辑非)

 

(五)集合运算

Is(not) entity(不)为空

Member of 元素属于集合

测试代码:




测试代码:


//返回查询单个对象代码,多个会报错。

测试代码:

@Test

   public voidtestWhere4_dangeduixiang(){

      //n.typeid=1

      Stringhql="from NewstypeBean as n wheren.typeid=1";//报错

      //String hql="from NewstypeBean as n wheren.typename like '%娱乐%'";//报错

      Queryquery=session.createQuery(hql);//import org.hibernate.Query

      //返回单个对象

      NewstypeBeannewstypeBean=(NewstypeBean) query.uniqueResult();

      System.out.println("testWhere4_dangeduixiang:"+newstypeBean.getTypename());

   }

 



测试代码:

public voidtestWhere5_orderBy(){

      //String hql="from NewstypeBean as n  order by n.typeidasc";

      Stringhql="from NewstypeBean as n  order by n.typeid desc";

      Queryquery=session.createQuery(hql);//import org.hibernate.Query

     

      List<Object>list=query.list();

      for(Object newsBean:list){

         System.out.println(newsBean);

      }

   }

 



1 0
原创粉丝点击