1. QBC查询:
@Test public void testQBC(){ //1. 创建一个Criteria 对象 Criteria criteria=session.createCriteria(Employee.class); //2. 添加查询条件 :在QBC中,查询条件使用Criterion来表示 // Criterion 可以通过Restrictions的静态方法得到 criteria.add(Restrictions.eq("email", "[email protected]")); criteria.add(Restrictions.between("salary", 3000F, 10000F)); //3. 执行查询 Employee emp=(Employee) criteria.uniqueResult(); System.out.println(emp.getName()); System.out.println(emp.getDept().getName()); }
@Test public void testQBC3(){ Criteria criteria=session.createCriteria(Employee.class); // 添加排序 criteria.addOrder(Order.asc("salary")); criteria.addOrder(Order.desc("email")); // 添加分页 int pageSize=5; int pageNo=3; criteria.setFirstResult((pageNo-1)*pageSize) .setMaxResults(pageSize) .list(); } @Test public void testQBC2(){ Criteria criteria=session.createCriteria(Employee.class); // 统计查询 使用Projection表示,可以由Projections的静态方法得到 criteria.setProjection(Projections.max("salary")); System.out.println(criteria.uniqueResult()); } @Test public void testQBC1(){ Criteria criteria=session.createCriteria(Employee.class); //1 AND:使用Conjunction表示 // Conjunction 本身就是一个 Criterion对象 // 且其中还可以添加Criterion对象 Conjunction conjunction=Restrictions.conjunction(); conjunction.add(Restrictions.isNotNull("email")); conjunction.add(Restrictions.eq("salary", 6000F)); //2 OR: 使用Disjunction表示 Disjunction disjunction=Restrictions.disjunction(); disjunction.add(Restrictions.eq("name", "name6")); disjunction.add(Restrictions.like("email", "name")); criteria.add(disjunction); criteria.add(conjunction); Employee emp=(Employee) criteria.uniqueResult(); System.out.println(emp.getName()); System.out.println(emp.getDept().getName()); }其它关于QBC查询用法,参考Hibernate的操作手册:hibernate-release-4.2.5.Final\documentation\manual\en-US\html_single\index.html
2. 本地SQL查询:
@Test public void testNativeSQL(){ String sql="insert into department values(?,?)"; Query query=session.createSQLQuery(sql); query.setInteger(0, 9) .setString(1, "umendme") .executeUpdate(); }同样本地sql查询相关内容也参看操作手册