1、讀取配置文件獲得連接
讀取hibernate.cfg.xml配置文件,hibernate.cfg.xml文件放在Classpath下,使用下面的方式讀入該文件
//Configuration 負(fù)責(zé)管理hibernate配置信息
Configuration config=new Configuration().configure();
//根據(jù)config建立SessionFactory
//SessionFactory用于建立Session
SessionFactory sessionFactory=config.buildSessionFactory();
//開啟session,相當(dāng)于jdbc的Connection
session = sessionFactory.openSession();
2、Criteria 基本資料查詢
(1)標(biāo)準(zhǔn)查詢:
//創(chuàng)建查詢標(biāo)準(zhǔn)
Criteria criteria=session.creteCriteria(User.class);
//查詢條件
criteria.add(Expression.eq("name","caterpillar"));
************************************************************************************
Expression.eq(String s1,String s2)---------->相等s1=s2
Expression.allEq(Map map) --------------->多個(gè)屬性-值對(duì)應(yīng)關(guān)系,多個(gè)Expression.eq疊加
Expression.gt(String s1,String s2)----------->大于s1>s2
Expression.ge(String s1,String s2)----------->大于等于s1>=s2
Expression.lt(String s1,String s2)------------>小于s1<s2
Expression.le(String s1,String s2)------------>小于等于s1<=s2
Expression.between(String s1,int s2,int s3)--->s2<s1<s3
Expression.like(String s1,String s2)------------>s1 like s2
比較2個(gè)屬性
Expression.eqProperty(String s1,String s2)--->s1=s2
Expression.gtProperty(String s1,String s2)---->s1>s2
Expression.geProperty(String s1,String s2)---->s1>=s2
Expression.ltProperty(String s1,String s2)----->s1<s2
Expression.leProperty(String s1,String s2)----->s1<=s2
Expression.and()----->Expression.and(Expression.eq("String s1,String s2"),Expression.eq(String s3,String s4))
Expression.or()
************************************************************************************
(2)高級(jí)查詢
一、可以使用Criteria進(jìn)行查詢,并用order對(duì)結(jié)果進(jìn)行排序。
//設(shè)置從第幾條開始取的記錄
criteria.setFirstResult(100);
//最多取的幾條記錄
criteria.setMaxResults(20);
//對(duì)結(jié)果進(jìn)行排序
criteria.addOrder(Order.asc(String s1));
criteria.addOrder(Order.desc(String s2));
二、可以對(duì)查詢結(jié)果進(jìn)行統(tǒng)計(jì)操作,使用Projections的rowCount(),count(),max(),min(),countDistinct()等方法:
例如:criteria.setProjection(Projections.max("age"));
三、還可以用Projections的groupProperty()來對(duì)結(jié)果進(jìn)行分組
例如:criteria.setProjection(Projections.groupProperty("age"));
(***)四、結(jié)合統(tǒng)計(jì)與分組的功能,可以用ProjectionList
例如:ProjectionList projectionList =Projections.projectionList();
projectionList.add(Projections.groupProperty("age"));
projectionList.add(Projections.rowCount());
criteria.setProjection(projectionList);
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//查詢所有記錄
List users=criteria.list();
Iterator iterator=users.iterator();
while(iterator.hasNext()){
User user=(User)iterator.next();
System.out.println(user.getId()+"\t"+user.getName()+"/"+user.getAge());
}
3、criteria的增、刪、改(還不完善)
在用到增、刪、改時(shí),必須先聲明事務(wù)
增加:
Transaction tx = session.beginTransaction();//Transaction表示一組會(huì)話操作
session.save(user);//將事物映射到數(shù)據(jù)庫進(jìn)行存儲(chǔ)
tx.commit();
session.close();
刪除:
Session session=this.getSession();
User user=(User)session.get(User.class, new Integer(1));
Transaction tx = session.beginTransaction();//Transaction表示一組會(huì)話操作
session.delete(user);//將事物映射到數(shù)據(jù)庫進(jìn)行存儲(chǔ)
tx.commit();
session.close();
修改:
Session session=this.getSession();
User user =(User)session.get(User.class,new Integer(2));//創(chuàng)建持久化的事物
user.setName("wyqqqqqqqqqq");
user.setAge(new Integer(30));
Transaction tx = session.beginTransaction();//Transaction表示一組會(huì)話操作
session.update(user);//將事物映射到數(shù)據(jù)庫進(jìn)行存儲(chǔ)
tx.commit();
session.close();
posted on 2008-05-18 20:41
henry1451 閱讀(458)
評(píng)論(0) 編輯 收藏 所屬分類:
Hibernate技術(shù)