Hibernate 学习之[where、group by、order by 子句 ]

package wfx.Hibernate;
import java.util.Iterator;
import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class ConditionQuery {

//    连接数据库.
    Configuration config=new Configuration().configure();
    SessionFactory sessionFactory = config.buildSessionFactory();
    Session session = sessionFactory.openSession();
    

    public static void main(String[] args) {
        ConditionQuery CQ=new ConditionQuery();
        
        CQ.the_name();//指定查询某个名字
        CQ.account_where();//可以在where语句上直接进行计算
        CQ.and_or();//'and'和'or'的用法
        CQ.Not_or_Null();//查看是否为空
        CQ.Between_two();//查询一个在两个数值之间的
        CQ.In_Notin();//可以使用in或not in來測試欄位值是否在您指定的集合中
        CQ.Like_Query();//like或not like可以讓您進行模糊條件搜尋
        CQ.Order_By();//可以對查詢結果使用order by進行排序
        CQ.Order_By_Desc();//倒序
        CQ.Order_Desc();//可同時指定兩個以上的排序方式
        //CQ.Group_By();//分组
        
        CQ.close();//关闭数据库的连接;

    }
    
    public void close(){
        sessionFactory.close();
        session.close();
    }
    
    
/**
* 指定查询某个名字
* 例如:name=wangfuxing
*/
    public void the_name(){
        Query query = session.createQuery("from User user where user.name='wangfuxing'");

        List list = query.list();
        Iterator iterator =  list.iterator();
        while(iterator.hasNext()) {
            User user = (User) iterator.next();
               System.out.println(user.getAge() + "/t" + user.getName());
        }
    }
    
/**
 * 可以在where语句上直接进行计算
 */
    public void account_where(){
        Query query =session.createQuery("from User user where (user.age / 7 = 3)");
        
        List list =query.list();
        Iterator iterator=list.iterator();
        while(iterator.hasNext()){             
            User user =(User)iterator.next();
               System.out.println(user.getName());    
    }
 }

/**
 * 'and'和'or'的用法  
 */
    public void and_or(){
        Query query=session.createQuery("from User user where (user.age>23)or(user.name='wangfuxing')");
        List list =query.list();
        Iterator iterator=list.iterator();
        while(iterator.hasNext()){
            User user =(User)iterator.next();
               System.out.println(user.getId()+" "+user.getName()+" "+user.getAge());    
        }
    }
/**
 *查看是否为空
 */    
    public void Not_or_Null(){
        Query query = session.createQuery("from User user where user.name is null");
        List list=query.list();
        Iterator iterator=list.iterator();
        while(iterator.hasNext()){
           User user =(User)iterator.next();
              System.out.println(user.getAge());
        }
    }
/**
 * 查询一个在两个数值之间的
 */
    public void Between_two(){
        Query query =session.createQuery("from User user where user.age between 20 and 24 ");
        List list =query.list();
        Iterator iterator=list.iterator();
        while(iterator.hasNext()){
            User user=(User)iterator.next();
                System.out.println(user.getName()+user.getAge());
        }
    }

/**
 *可以使用in或not in來測試欄位值是否在您指定的集合中
 */
    public void In_Notin(){
        Query query=session.createQuery("from User user where user.name in('wangfuxing','xiaoyu')");
        List list =query.list();
        Iterator iterator=list.iterator();
        while(iterator.hasNext()){
            User user =(User)iterator.next();
            System.out.println("IN NOT IN 用法:"+user.getName());
        }
    }

/**
 * like或not like可以讓您進行模糊條件搜尋
 * 假如:搜寻的条件中有wang的
 */
    public void Like_Query(){
        Query query=session.createQuery("from User user where user.name like 'wang%'");
        List list =query.list();
        Iterator iterator=list.iterator();
        while(iterator.hasNext()){
            User user=(User)iterator.next();
            System.out.println("Like 用法:"+user.getName());
        }
    }
    
/**
 * 可以對查詢結果使用order by進行排序
 * 例如:按年龄排序
 */
    public void order_By(){
        Query query =session.createQuery("from User user order by user.age");
        List list =query.list();
        Iterator iterator=list.iterator();
        while(iterator.hasNext()){
            User user=(User)iterator.next();
            System.out.println("Order 用法:"+user.getName()+" "+ user.getAge());
        }
    }

/**
 * Desc 倒序排列
 */
    public void order_By_Desc(){
        Query query =session.createQuery("from User user order by user.age desc");
        List list =query.list();
        Iterator iterator=list.iterator();
        while(iterator.hasNext()){
            User user=(User)iterator.next();
            System.out.println("Desc 用法:"+user.getName()+" "+ user.getAge());
        }
    }
/**
 * 可同時指定兩個以上的排序方式,
 * 例如先按照"age"反序排列,
 * 如果"age"相同,
 * 則按照"name"順序排列:
 */    
    public void order_Desc(){
        Query query = session.createQuery("from User user order by user.age desc, user.name");
        List list =query.list();
        Iterator iterator=list.iterator();
        while(iterator.hasNext()){
            User user=(User)iterator.next();
            System.out.println("可同時指定兩個以上的排序方式 用法:"+user.getName()+" "+ user.getAge());
        }
    }

/**
 * 可以配合GROUP BY子句,
 * 自動將指定的欄位依相同的內容群組,
 * 例如依欄位"sex"分組並作平均:
 */
    public void Group_By(){
        Query query = session.createQuery("select user.sex, avg(user.age) from User user group by user.sex");
        List list =query.list();
        Iterator iterator=list.iterator();
        while(iterator.hasNext()){
            
            System.out.println("name:"+iterator.next());
            }
    }

}



运行输出的结果:

24    wangfuxing
22    wangfuxing

xiaoyu

1 wangfuxing 24
4 xiaojinzhao 26
6 wangfuxing 22
7  28


wangfuxing24
longxiao23
xiaoyu21
liuzhiliang23
wangfuxing22

IN NOT IN 用法:wangfuxing
IN NOT IN 用法:xiaoyu
IN NOT IN 用法:wangfuxing

Like 用法:wangfuxing
Like 用法:wangfuxing

order 用法:xiaoyu 21
order 用法:wangfuxing 22
order 用法:longxiao 23
order 用法:liuzhiliang 23
order 用法:wangfuxing 24
order 用法:xiaojinzhao 26
order 用法: 28

Desc 用法: 28
Desc 用法:xiaojinzhao 26
Desc 用法:wangfuxing 24
Desc 用法:longxiao 23
Desc 用法:liuzhiliang 23
Desc 用法:wangfuxing 22
Desc 用法:xiaoyu 21

可同時指定兩個以上的排序方式 用法: 28
可同時指定兩個以上的排序方式 用法:xiaojinzhao 26
可同時指定兩個以上的排序方式 用法:wangfuxing 24
可同時指定兩個以上的排序方式 用法:liuzhiliang 23
可同時指定兩個以上的排序方式 用法:longxiao 23
可同時指定兩個以上的排序方式 用法:wangfuxing 22
可同時指定兩個以上的排序方式 用法:xiaoyu 21

name:[Ljava.lang.Object;@1b64e6a
name:[Ljava.lang.Object;@1d62270


14:46:20,093  INFO SessionFactoryImpl:776 - closing
14:46:20,093  INFO DriverManagerConnectionProvider:147 - cleaning up connection pool: jdbc:mysql://localhost/HibernateTest

[本日志由 daxing22 于 2006-09-26 02:50 PM 编辑]
  引用通告地址: http://daxing.chinese.cn.com/trackback.asp?tbID=189
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值