hibernate 3.x 常用查询语句

来源:互联网 发布:mac pro display 编辑:程序博客网 时间:2024/05/18 00:13

1、HQL: Hibernate查询语言

Hibernate配备了一种非常强大的查询语言,这种语言看上去很像SQL。但是不要被语法结构  上的相似所迷惑,HQL是非常有意识的被设计为完全面向对象的查询,它可以理解如继承、多态 和关联之类的概念

大小写敏感问题:除了Java类与属性的名称外,查询语句对大小写并不敏感。 所以 SeLeCT与 sELEct以及  SELECT是相同的,但是 org.hibernate.eg.FOO并不等价于  org.hibernate.eg.Foo并且 foo.barSet也不等价于  foo.BARSET。

示例:

public void query(String name){

Session s=null;

try{

s=HibernateUtil.getSession();

String hql="from User as user where user.username=:name";  //使用命名参数,推荐使用,易读。

Query query=s.createQuery(hql);

query.setString("name", name);

//或者如下写法                 

String  hqlstr ="from User as user where user.username=?"                 

Query que=s.createQuery(hqlstr);

que.setParameter("name", name);                

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

for(User useradmin:list){

System.out.println(user.getUsername());

}

}finally{

if(s!=null)

s.close();

}

}

2、Criteria 条件查询

示例1:普通条件语句

List cats = session.createCriteria(User.class)

.add( Restrictions.like("username", "liu%") )

.add( Restrictions.or(

Restrictions.eq( "age", new Integer(0) ),//eq是等于,gt是大于,lt是小于,or是或

Restrictions.isNull("age")

) )

.list();

等价sql语句:

select from cat t where t.name like ''liu%"  and (t.age ==0 or t.age is  null )

示例2:结果集排序语句

List cats = session.createCriteria(User.class)

.add( Property.forName("username").like("liu%") )

.addOrder( Property.forName("username").asc() )

.addOrder( Property.forName("age").desc() )

// .setMaxResults(50) 取出最多50条数据

.list();

3、普通sql语句查询

public List sql() {

Session s = session.getSession();

Query q = s.createSQLQuery("select * from user t where  t.username='admin'").addEntity(User.class);

List<User> rs = q.list();

s.close();

return rs;

}

原创粉丝点击