zoukankan      html  css  js  c++  java
  • Hibernate之QBC查询与本地SQL查询

    1. QBC查询:

        QBC 查询就是通过使用Hibernate提供的QueryByCriteria API 来查询对象,这种API封装了SQL语句的动态拼装,对查询提供了更加面向对象的功能接口
       QBC查询示例(接HQL查询,使用上一篇相同的环境):
    @Test
    	public void testQBC(){
    		//1.  创建一个Criteria 对象
    		Criteria criteria=session.createCriteria(Employee.class);
    		
    		//2. 添加查询条件 :在QBC中,查询条件使用Criterion来表示
    		//   Criterion 可以通过Restrictions的静态方法得到
    		criteria.add(Restrictions.eq("email", "name4@qq.com"));
    		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.Finaldocumentationmanualen-UShtml_singleindex.html

    2. 本地SQL查询:

       本地SQL查询来完善HQL不能涵盖所有的查询特性
    @Test
    	public void testNativeSQL(){
    		String sql="insert into department values(?,?)";
    		Query query=session.createSQLQuery(sql);
    		query.setInteger(0, 9)
    		     .setString(1, "umendme")
    		     .executeUpdate();
    	}
    同样本地sql查询相关内容也参看操作手册





  • 相关阅读:
    [WPF]根据内容自动设置大小的RichTextBox
    SICP In Other Languages
    VS 代码段编辑器
    利用SQL Server Migration Assistant将access数据库导入到SQL
    关于gcc on windows的“拒绝访问”问题
    文本比较(C#版本)
    [WPF]自定义鼠标指针
    哎~~~又是RichTextBox
    [iphone]想或正在做iphone开发的朋友,这里有点ppt和demo
    Windows Phone 7 的 “界面设计与交互指南”
  • 原文地址:https://www.cnblogs.com/elgin-seth/p/5293752.html
Copyright © 2011-2022 走看看