⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 criteriaexample.java

📁 Hibernate基础教程一书源码.Hibernate是一个持久层开源框架
💻 JAVA
字号:
package com.hibernatebook.queries;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Disjunction;
import org.hibernate.criterion.Example;
import org.hibernate.criterion.LogicalExpression;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.ProjectionList;
import org.hibernate.criterion.Projections;
import org.hibernate.criterion.Restrictions;

public class CriteriaExample {
	public void executeSimpleCriteria(Session session) {
		Criteria crit = session.createCriteria(Product.class);
		List results = crit.list();
		displayProductsList(results);
	}

	public void executeEqualsCriteria(Session session) {
		Criteria crit = session.createCriteria(Product.class);
		crit.add(Restrictions.eq("name", "Mouse"));
		List results = crit.list();
		displayProductsList(results);
	}

	public void executeNotEqualsCriteria(Session session) {
		Criteria crit = session.createCriteria(Product.class);
		crit.add(Restrictions.ne("name", "Mouse"));
		List results = crit.list();
		displayProductsList(results);
	}

	public void executeLikePatternCriteria(Session session) {
		Criteria crit = session.createCriteria(Product.class);
		crit.add(Restrictions.like("name", "Mou%"));
		List results = crit.list();
		displayProductsList(results);
	}

	public void executeILikeMatchModeCriteria(Session session) {
		Criteria crit = session.createCriteria(Product.class);
		crit.add(Restrictions.ilike("name", "browser", MatchMode.END));
		List results = crit.list();
		displayProductsList(results);
	}

	public void executeNullCriteria(Session session) {
		Criteria crit = session.createCriteria(Product.class);
		crit.add(Restrictions.isNull("name"));
		List results = crit.list();
		displayProductsList(results);
	}

	public void executeGreaterThanCriteria(Session session) {
		Criteria crit = session.createCriteria(Product.class);
		crit.add(Restrictions.gt("price", new Double(25.0)));
		List results = crit.list();
		displayProductsList(results);
	}

	public void executeAndCriteria(Session session) {
		Criteria crit = session.createCriteria(Product.class);
		crit.add(Restrictions.gt("price", new Double(25.0)));
		crit.add(Restrictions.like("name", "K%"));
		List results = crit.list();
		displayProductsList(results);
	}

	public void executeOrCriteria(Session session) {
		Criteria crit = session.createCriteria(Product.class);
		Criterion price = Restrictions.gt("price", new Double(25.0));
		Criterion name = Restrictions.like("name", "Mou%");
		LogicalExpression orExp = Restrictions.or(price, name);
		crit.add(orExp);
		List results = crit.list();
		displayProductsList(results);
	}

	public void executeAndOrCriteria(Session session) {
		Criteria crit = session.createCriteria(Product.class);
		Criterion price = Restrictions.gt("price", new Double(25.0));
		Criterion name = Restrictions.like("name", "Mou%");
		LogicalExpression orExp = Restrictions.or(price, name);
		crit.add(orExp);
		crit.add(Restrictions.ilike("description", "blocks%"));
		List results = crit.list();
		displayProductsList(results);
	}

	public void executeDisjunctionCriteria(Session session) {
		Criteria crit = session.createCriteria(Product.class);
		Criterion price = Restrictions.gt("price", new Double(25.0));
		Criterion name = Restrictions.like("name", "Mou%");
		Criterion desc = Restrictions.ilike("description", "blocks%");
		Disjunction disjunction = Restrictions.disjunction();
		disjunction.add(price);
		disjunction.add(name);
		disjunction.add(desc);
		crit.add(disjunction);
		List results = crit.list();
		displayProductsList(results);
	}

	public void executeSQLCriteria(Session session) {
		Criteria crit = session.createCriteria(Product.class);
		crit.add(Restrictions.sqlRestriction("{alias}.name like 'Mou%'"));
		List results = crit.list();
		displayProductsList(results);
	}

	public void executePagingCriteria(Session session) {
		Criteria crit = session.createCriteria(Product.class);
		crit.setFirstResult(1);
		crit.setMaxResults(2);
		List results = crit.list();
		displayProductsList(results);
	}

	public void executeUniqueResultCriteria(Session session) {
		Criteria crit = session.createCriteria(Product.class);
		crit.setMaxResults(1);
		Product product = (Product) crit.uniqueResult();
		// test for null here if needed

		List results = new ArrayList();
		results.add(product);
		displayProductsList(results);
	}

	public void executeUniqueResultExceptionCriteria(Session session) {
		Criteria crit = session.createCriteria(Product.class);
		Product product = (Product) crit.uniqueResult();
		// test for null here if needed

		List results = new ArrayList();
		results.add(product);
		displayProductsList(results);
	}

	public void executeOrderCriteria(Session session) {
		Criteria crit = session.createCriteria(Product.class);
		crit.add(Restrictions.gt("price", new Double(25.0)));
		crit.addOrder(Order.desc("price"));
		List results = crit.list();
		displayProductsList(results);
	}

	public void executeOneToManyAssociationsCriteria(Session session) {
		Criteria crit = session.createCriteria(Supplier.class);
		Criteria prdCrit = crit.createCriteria("products");
		prdCrit.add(Restrictions.gt("price", new Double(25.0)));
		List results = crit.list();
		displaySupplierList(results);
	}

	public void executeAssociationsSortingCriteria(Session session) {
		Criteria crit = session.createCriteria(Supplier.class);
		crit.addOrder(Order.desc("name"));
		Criteria prdCrit = crit.createCriteria("products");
		prdCrit.add(Restrictions.gt("price", new Double(25.0)));
		// prdCrit.addOrder(Order.desc("price"));
		List results = prdCrit.list();
		displaySupplierList(results);
	}

	public void executeManyToOneAssociationsCriteria(Session session) {
		Criteria crit = session.createCriteria(Product.class);
		Criteria suppCrit = crit.createCriteria("supplier");
		suppCrit.add(Restrictions.eq("name", "MegaInc"));
		List results = crit.list();

		displayProductsList(results);
	}

	public void executeQBECriteria(Session session) {
		Criteria crit = session.createCriteria(Supplier.class);
		Supplier supplier = new Supplier();
		supplier.setName("MegaInc");
		crit.add(Example.create(supplier));
		List results = crit.list();

		displaySupplierList(results);
	}

	public void executeNotNullOrZeroQBECriteria(Session session) {
		Criteria crit = session.createCriteria(Product.class);
		Product exampleProduct = new Product();
		exampleProduct.setName("Mouse");
		Example example = Example.create(exampleProduct);
		example.excludeZeroes();
		crit.add(example);
		List results = crit.list();

		displayProductsList(results);
	}

	public void executeQBEAdvancedCriteria(Session session) {
		Criteria prdCrit = session.createCriteria(Product.class);
		Product product = new Product();
		product.setName("M%");
		Example prdExample = Example.create(product);
		prdExample.excludeProperty("price");
		prdExample.enableLike();
		Criteria suppCrit = prdCrit.createCriteria("supplier");
		Supplier supplier = new Supplier();
		supplier.setName("SuperCorp");
		suppCrit.add(Example.create(supplier));
		prdCrit.add(prdExample);
		List results = prdCrit.list();

		displayProductsList(results);
	}

	public void executeRowCountCriteria(Session session) {
		Criteria crit = session.createCriteria(Product.class);
		crit.setProjection(Projections.rowCount());
		List results = crit.list();
		displayObjectList(results);
	}

	public void executeAggregatesCriteria(Session session) {
		Criteria crit = session.createCriteria(Product.class);
		ProjectionList projList = Projections.projectionList();
		projList.add(Projections.max("price"));
		projList.add(Projections.min("price"));
		projList.add(Projections.avg("price"));
		projList.add(Projections.countDistinct("description"));
		crit.setProjection(projList);
		List results = crit.list();
		displayObjectsList(results);
	}

	public void executeProjectionCriteria(Session session) {
		Criteria crit = session.createCriteria(Product.class);
		ProjectionList projList = Projections.projectionList();
		projList.add(Projections.property("name"));
		projList.add(Projections.property("description"));
		crit.setProjection(projList);
		List results = crit.list();
		displayObjectsList(results);
	}

	public void executeGroupByCriteria(Session session) {
		Criteria crit = session.createCriteria(Product.class);
		ProjectionList projList = Projections.projectionList();
		projList.add(Projections.groupProperty("name"));
		projList.add(Projections.property("price"));
		crit.setProjection(projList);
		List results = crit.list();
		displayObjectsList(results);
	}

	public void executeDistinctCriteria(Session session) {
		Criteria crit = session.createCriteria(Product.class);
		crit.add(Restrictions.gt("price", new Double(25.0)));
		crit.add(Restrictions.like("name", "K%"));
		crit.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
		List results = crit.list();
		displayProductsList(results);
	}

	public void populate(Session session) {

		Supplier superCorp = new Supplier();
		superCorp.setName("SuperCorp");
		session.save(superCorp);

		Supplier megaInc = new Supplier();
		megaInc.setName("MegaInc");
		session.save(megaInc);

		Product mouse = new Product("Mouse", "Optical Wheel Mouse", 20.0);
		mouse.setSupplier(superCorp);
		superCorp.getProducts().add(mouse);

		Product mouse2 = new Product("Mouse", "One Button Mouse", 22.0);
		mouse2.setSupplier(superCorp);
		superCorp.getProducts().add(mouse2);

		Product keyboard = new Product("Keyboard", "101 Keys", 30.0);
		keyboard.setSupplier(megaInc);
		megaInc.getProducts().add(keyboard);

		Software webBrowser = new Software("Web Browser", "Blocks Pop-ups",
				75.0, "2.0");
		webBrowser.setSupplier(superCorp);
		superCorp.getProducts().add(webBrowser);

		Software email = new Software("Email", "Blocks spam", 49.99,
				"4.1 RMX Edition");
		email.setSupplier(megaInc);
		megaInc.getProducts().add(email);

	}

	public void displayObjectList(List list) {
		Iterator iter = list.iterator();
		if (!iter.hasNext()) {
			System.out.println("No objects to display.");
			return;
		}
		while (iter.hasNext()) {
			Object obj = iter.next();

			System.out.println(obj);
		}
	}

	public void displayObjectsList(List list) {
		Iterator iter = list.iterator();
		if (!iter.hasNext()) {
			System.out.println("No objects to display.");
			return;
		}
		while (iter.hasNext()) {
			System.out.println("New object");
			Object[] obj = (Object[]) iter.next();
			for (int i = 0; i < obj.length; i++) {
				System.out.println(obj[i]);
			}

		}
	}

	public void displayProductsList(List list) {
		Iterator iter = list.iterator();
		if (!iter.hasNext()) {
			System.out.println("No products to display.");
			return;
		}
		while (iter.hasNext()) {
			Product product = (Product) iter.next();
			String msg = product.getSupplier().getName() + "\t";
			msg += product.getName() + "\t";
			msg += product.getPrice() + "\t";
			msg += product.getDescription();
			System.out.println(msg);
		}
	}

	public void displaySoftwareList(List list) {
		Iterator iter = list.iterator();
		if (!iter.hasNext()) {
			System.out.println("No software to display.");
			return;
		}
		while (iter.hasNext()) {
			Software software = (Software) iter.next();
			String msg = software.getSupplier().getName() + "\t";
			msg += software.getName() + "\t";
			msg += software.getPrice() + "\t";
			msg += software.getDescription() + "\t";
			msg += software.getVersion();
			System.out.println(msg);
		}
	}

	public void displaySupplierList(List list) {
		Iterator iter = list.iterator();
		if (!iter.hasNext()) {
			System.out.println("No suppliers to display.");
			return;
		}
		while (iter.hasNext()) {
			Supplier supplier = (Supplier) iter.next();
			String msg = supplier.getName();
			System.out.println(msg);
		}
	}

	public static void main(String args[]) {
		CriteriaExample example = new CriteriaExample();


		SessionFactory factory = new Configuration().configure().buildSessionFactory();

		Session session = factory.openSession();
		session.beginTransaction();

		if( args[0].equalsIgnoreCase(POPULATE) ) {
			example.populate(session);
			session.getTransaction().commit();
			session.beginTransaction();
		} else {
			example.executeDistinctCriteria(session);
		}

		session.getTransaction().commit();
		session.close();
	}

	private static final String POPULATE = "populate";
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -