hibernate QBC检索方式查询

Hibernate提供了一套符合Java编程习惯的API,即QBC(Query By Creteria)检索方式,
主要邮Criteria接口,Criterion接口和Expression类组成.优点是支持动态查询,在编译时就进行解析,容易排除错误;缺点是没有HQL功能强大.
Hibernate.java
package mrgf;

import java.util.List;
import org.hibernate.cfg.Configuration;
import org.hibernate.SessionFactory;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.Criteria;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Expression;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.MatchMode;
import java.util.Map;
import java.util.HashMap;

public class Hibernate {
public Hibernate() {
}
// 在静态快中加载Hibernate配置信息
private static SessionFactory sessionFactory;
static {
try {
Configuration config = new Configuration().configure();
sessionFactory = config.buildSessionFactory();
} catch (Exception e) {
System.out.println("------在初始化hibernate时抛出异常,内容如下:");
e.printStackTrace();
}
}
private Session session = null;
private Transaction tx = null;
//检索对象
public List query() {
// 打开Session,开启事物
session = sessionFactory.openSession();
tx = session.beginTransaction();
// 检索数据
Criteria criteria = session.createCriteria(Record.class); //Record在my.bean里面
criteria.addOrder(Order.desc("id")); //降序
Criterion criterion = Expression.eq("sex", "男"); //条件,有这句就不用select来查询了
criteria.add(criterion); //把条件给criteria
List result = criteria.list(); //criteria相当于query,自己本身就是查询
// 提交事物,关闭Session
tx.commit();
session.close();
return result;
}

}


index.jsp使用
<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="java.util.*" %>
<%@ page import="mrgf.*" %>


<br>index<br>








 















 
员工档案表
 











<%
Hibernate hibernate = new Hibernate();
List l=hibernate.query();
Iterator it=l.iterator();
while(it.hasNext()){
Record r=(Record)it.next();
%>










<%
}
%>
编号 姓名 性别 出生日期 民族 学历 籍贯 家庭住址
<%=r.getId() %> <%=r.getName() %> <%=r.getSex() %> <%=r.getBirthday() %> <%=r.getNation() %> <%=r.getSchoolAge() %> <%=r.getNativePlace() %> <%=r.getAddress() %>
 
 



QBC检索方式常用的设定查询条件的方法
查询条件 设定方法 方法说明
单条件等于 Expression.eq(String attribute,String value) equal,两个参数依次为要检索属性和检索值
多条件等于 Expression.allEq(Map attEq Val) 通过Map型入口参数可以同时设定多个检索条件
不等于 Expression.not( Expression.eq()) 通过方法的联合使用实现不等于
大于 Expression.gt(String attribute,String value) greate-than,检索属性attribute的值大于value值 的记录
大于等于 Expression.ge(String attribute,String value) greate-equal,检索属性attribute的值大于或者等于value值 的记录
小于 Expression.lt(String attribute,String value) less-than 检索属性attribute的值小于value值 的记录
小于等于 Expression.le(String attribute,String value) less-equal,检索属性attribute的值小于或者等于 value值 的记录
空值 Expression.isNull(String attribute) 入口参数为要检索的属性
非空 Expression.isNotNull(String attribute) 入口参数为要检索的属性
在列表中 Expression.in() 等同于SQL语句中的IN子句
不在列表中 Expression.not(Expression.eq()) 等同于SQL语句中的NOT IN子句
在范围内 Expression.between() 等同于SQL语句中的BETWEEN子句
不在范围内 Expression.not(Expression.between()) 等同于SQL语句中的NOT BETWEEN子句
与 Expression.and() 等同于SQL语句中的AND
或 Expression.or() 等同于SQL语句中的OR
非 Expression.not() 等同于SQL语句中的NOT
字符串匹配 Expression.like() 检索指定字符串,并可以指定匹配模式
升序排列 Order.asc(String attribute) 按入口参数指定的属性升序排列
降序排列 Order.desc(String attribute) 按入口参数指定的属性降序排列
精确匹配 MatchMode.EXACT 等同于SQL语句中的"LIKE 'value'"子句
包含匹配 MatchMode.ANYWHERE 等同于SQL语句中的"LIKE '%value%'"子句
左匹配 MatchMode.START 等同于SQL语句中的"LIKE 'value%'"子句
右匹配 MatchMode.END 等同于SQL语句中的"LIKE '%value'"子句

你可能感兴趣的:(hibernate QBC检索方式查询)