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
引用通告地址: http://daxing.chinese.cn.com/trackback.asp?tbID=189