天天看點

Hibernate學習(4): Hibernate标準查詢

使用 Criteria 對象的add()方法去添加一個标準查詢的限制去查詢結果。

//建立sessionFactory對象
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();;
//獲得session對象
Session session = sessionFactory.getCurrentSession();
//通過session獲得查詢對象 criteria
//括号裡面的參數就是查詢條件了,表示我們查詢的就是這個實體對象.
Criteria cr = session.createCriteria(Employee.class); 
//添加一個标準查詢的限制   
cr.add(Restrictions.eq("salary", 2000));   
//這表示接收傳回值. 
List results = cr.list();
           

事務:

public void listEmployees( ){
  Session session = factory.openSession();
  Transaction tx = null;
  try{
	 tx = session.beginTransaction();
	 session.save(customer);//之前已執行個體化好了的一個對象
	 tx.commit();
  }catch (HibernateException e) {
	 if (tx!=null) tx.rollback();
	 e.printStackTrace(); 
  }finally {
	 session.close(); 
  }
}
           

QBC(Query By Criteria) 常用限定方法

Restrictions.eq --> equal,等于.

Restrictions.ne --> not-equals,不等于

Restrictions.allEq --> 參數為Map對象,使用key/value進行多個等于的比對,相當于多個Restrictions.eq的效果

Restrictions.gt --> great-than > 大于

Restrictions.ge --> great-equal >= 大于等于

Restrictions.lt --> less-than, < 小于

Restrictions.le --> less-equal <= 小于等于

Restrictions.between --> 對應SQL的between子句

Restrictions.like --> 對應SQL的LIKE子句

Restrictions.in --> 對應SQL的in子句

Restrictions.and --> and 關系

Restrictions.or --> or 關系

Restrictions.isNull --> 判斷屬性是否為空,為空則傳回true

Restrictions.isNotNull --> 與isNull相反

Restrictions.sqlRestriction --> SQL限定的查詢

Order.asc --> 根據傳入的字段進行升序排序

Order.desc --> 根據傳入的字段進行降序排序

MatchMode.EXACT --> 字元串精确比對.相當于"like 'value'"

MatchMode.ANYWHERE --> 字元串在中間比對.相當于"like '%value%'"

MatchMode.START --> 字元串在最前面的位置.相當于"like 'value%'"

MatchMode.END --> 字元串在最後面的位置.相當于"like '%value'"
           

使用邏輯表達式建立 AND 或 OR 的條件組合

Criteria cr = session.createCriteria(Employee.class);

Criterion salary = Restrictions.gt("salary", 2000);
Criterion name = Restrictions.ilike("firstNname","zara%");

// To get records matching with OR condistions
LogicalExpression orExp = Restrictions.or(salary, name);
cr.add( orExp );

// To get records matching with AND condistions
LogicalExpression andExp = Restrictions.and(salary, name);
cr.add( andExp );

List results = cr.list();
           

Restrictions用法:http://blog.163.com/zhaowenchao_vip/blog/static/1715151442012411101741608/