hibernate学习笔记(一)------------使用criteria进行查询

1、读取配置文件获得连接
   读取hibernate.cfg.xml配置文件,hibernate.cfg.xml文件放在Classpath下,使用下面的方式读入该文件
    

//Configuration 负责管理hibernate配置信息 Configuration config=new Configuration().configure(); //根据config建立SessionFactory //SessionFactory用于建立Session SessionFactory sessionFactory=config.buildSessionFactory(); //开启session,相当于jdbc的Connection session = sessionFactory.openSession();

 

 
2、Criteria 基本资料查询
(1)标准查询:
       //创建查询标准 Criteria criteria=session.creteCriteria(User.class); //查询条件 criteria.add(Expression.eq("name","caterpillar")); ************************************************************************************ Expression.eq(String s1,String s2)---------->相等s1=s2 Expression.allEq(Map map) --------------->多个属性-值对应关系,多个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对结果进行排序。

//设置从第几条开始取的记录 criteria.setFirstResult(100); //最多取的几条记录 criteria.setMaxResults(20); //对结果进行排序 criteria.addOrder(Order.asc(String s1)); criteria.addOrder(Order.desc(String s2));
 

 
二、可以对查询结果进行统计操作,使用Projections的rowCount(),count(),max(),min(),countDistinct()等方法:
例如:criteria.setProjection(Projections.max("age"));

三、还可以用Projections的groupProperty()来对结果进行分组
例如:criteria.setProjection(Projections.groupProperty("age"));

(***)四、结合统计与分组的功能,可以用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的增、删、改(还不完善)
在用到增、删、改时,必须先声明事务
增加:
  Transaction tx = session.beginTransaction();//Transaction表示一组会话操作
  session.save(user);//将事物映射到数据库进行存储
  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);//将事物映射到数据库进行存储
  tx.commit();
  session.close();
修改:
  Session session=this.getSession();
  User user =(User)session.get(User.class,new Integer(2));//创建持久化的事物
  user.setName("wyqqqqqqqqqq");
  user.setAge(new Integer(30));
  Transaction tx = session.beginTransaction();//Transaction表示一组会话操作
  session.update(user);//将事物映射到数据库进行存储
  tx.commit();
  session.close();

 
3、criteria的增、删、改(还不完善)
在用到增、删、改时,必须先声明事务
增加:
  

Transaction tx = session.beginTransaction();//Transaction表示一组会话操作
  session.save(user);//将事物映射到数据库进行存储
  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);//将事物映射到数据库进行存储
  tx.commit();
  session.close();

 

修改:
  

Session session=this.getSession();
  User user =(User)session.get(User.class,new Integer(2));//创建持久化的事物
  user.setName("wyqqqqqqqqqq");
  user.setAge(new Integer(30));
  Transaction tx = session.beginTransaction();//Transaction表示一组会话操作
  session.update(user);//将事物映射到数据库进行存储
  tx.commit();
  session.close();

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值