posts - 60,comments - 71,trackbacks - 0

              1、讀取配置文件獲得連接
             讀取hibernate.cfg.xml配置文件,hibernate.cfg.xml文件放在Classpath下,使用下面的方式讀入該文件
                //Configuration 負責(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)標準查詢:
                //創(chuàng)建查詢標準
                Criteria criteria=session.creteCriteria(User.class);
                //查詢條件
                criteria.add(Expression.eq("name","caterpillar"));
          ************************************************************************************
          Expression.eq(String s1,String s2)---------->相等s1=s2
          Expression.allEq(Map map)    --------------->多個屬性-值對應(yīng)關(guān)系,多個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個屬性
          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)高級查詢
          一、可以使用Criteria進行查詢,并用order對結(jié)果進行排序。
          //設(shè)置從第幾條開始取的記錄
          criteria.setFirstResult(100);
          //最多取的幾條記錄
          criteria.setMaxResults(20);
          //對結(jié)果進行排序
          criteria.addOrder(Order.asc(String s1));
          criteria.addOrder(Order.desc(String s2));

          二、可以對查詢結(jié)果進行統(tǒng)計操作,使用Projections的rowCount(),count(),max(),min(),countDistinct()等方法:
          例如:criteria.setProjection(Projections.max("age"));

          三、還可以用Projections的groupProperty()來對結(jié)果進行分組
          例如:criteria.setProjection(Projections.groupProperty("age"));

          (***)四、結(jié)合統(tǒng)計與分組的功能,可以用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的增、刪、改(還不完善)
          在用到增、刪、改時,必須先聲明事務(wù)
          增加:
            Transaction tx = session.beginTransaction();//Transaction表示一組會話操作
            session.save(user);//將事物映射到數(shù)據(jù)庫進行存儲
            tx.commit();
            session.close();
          刪除:
            Session session=this.getSession();
            User user=(User)session.get(User.class, new Integer(1));
            Transaction tx = session.beginTransaction();//Transaction表示一組會話操作
            session.delete(user);//將事物映射到數(shù)據(jù)庫進行存儲
            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表示一組會話操作
            session.update(user);//將事物映射到數(shù)據(jù)庫進行存儲
            tx.commit();
            session.close();
          posted on 2008-05-18 20:41 henry1451 閱讀(465) 評論(0)  編輯  收藏 所屬分類: Hibernate技術(shù)
          主站蜘蛛池模板: 潼关县| 博客| 祁连县| 浦东新区| 岢岚县| 开鲁县| 湾仔区| 峨眉山市| 手机| 石狮市| 湛江市| 绥阳县| 白沙| 赣州市| 星子县| 临汾市| 喀什市| 太仓市| 林西县| 丰原市| 青铜峡市| 西乡县| 岳阳市| 张家港市| 繁峙县| 巴里| 安岳县| 乾安县| 河北省| 会理县| 肃北| 广德县| 大渡口区| 阜新市| 贞丰县| 海伦市| 泾源县| 西吉县| 西藏| 宝鸡市| 织金县|