hibernate的criteria

//使用Criteria查询所有
public static void demo1() {
		Session session = null;
		try {
			session = getSession();
			Criteria cri = session.createCriteria(User.class);//理解成from User
			List<User> listUser = cri.list();//返回查到的所有实体类对象

			if (listUser != null && listUser.size() > 0) {
				for (int i = 0; i < listUser.size(); i++) {
					User user = listUser.get(i);
					System.out.println("id:" + user.getId() + "name:"
							+ user.getName());
				}
			}

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if (session != null && session.isOpen()) {
				session.close();
			}
		}
	}
//Restrictions:创建匹配单元
public static void demo2() {
		Session session = null;
		try {
			session = getSession();
			Criteria cri = session.createCriteria(User.class);
			cri.add(Restrictions.like("name", "demo2%"));//匹配单元,匹配字段name和demo2...像的对象

			List<User> listUser = cri.list();
			if (listUser != null && listUser.size() > 0) {
				for (int i = 0; i < listUser.size(); i++) {
					User user = listUser.get(i);
					System.out.println("id:" + user.getId() + "name:"
							+ user.getName());
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if (session != null && session.isOpen()) {
				session.close();
			}
		}
	}
//Example 封装匹配条件
public static void demo3() {
		Session session = null;
		try {

			session = getSession();
			Criteria cri = session.createCriteria(User.class);

			User match = new User();
			match.setName("demo1");
			match.setPassword("1");
			cri.add(Example.create(match));

			List<User> listUser = cri.list();

			if (listUser != null && listUser.size() > 0) {
				for (int i = 0; i < listUser.size(); i++) {
					User user = listUser.get(i);
					System.out.println("id:" + user.getId() + " name:"
							+ user.getName() + " password:"
							+ user.getPassword());
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if (session != null && session.isOpen()) {
				session.close();
			}
		}
	}
//使用Order排序
public static void demo4() {
		Session session = null;
		try {
			session = getSession();
			Criteria cri = session.createCriteria(User.class);
			cri.add(Restrictions.like("name", "demo%"));
			
			cri.addOrder(Order.desc("id"));//Order by
			List<User> listUser = cri.list();

			if (listUser != null && listUser.size() > 0) {
				for (int i = 0; i < listUser.size(); i++) {
					User user = listUser.get(i);
					System.out.println("id:" + user.getId() + "name:"
							+ user.getName());
				}
			}

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if (session != null && session.isOpen()) {
				session.close();
			}
		}
	}
//Projections 聚合查询
public static void demo5() {
    
		Session session = null;
		try {
			session = getSession();

			Criteria cri = session.createCriteria(User.class);

			ProjectionList plist = Projections.projectionList();
			plist.add(Projections.property("name"));
			plist.add(Projections.groupProperty("name"));//group by u.name
			plist.add(Projections.rowCount());// select count(u)
			plist.add(Projections.count("name"));//select count(u.name)性名不为空的
			plist.add(Projections.countDistinct("name"));//select count( distinct u.name )性名不为空的且不重复的
			plist.add(Projections.max("age"));//select max(u.age)
			plist.add(Projections.min("age"));
			plist.add(Projections.avg("age"));
			plist.add(Projections.sum("age"));

			cri.setProjection(plist);

			cri.setProjection(Projections.rowCount());
			// 下面的简写方案

			ProjectionList plist1 = Projections.projectionList();
			plist1.add(Projections.rowCount());
			cri.setProjection(plist1);

			List<Object[]> listRow = cri.list();

			if (listRow != null && listRow.size() > 0) {
				for (int i = 0; i < listRow.size(); i++) {
					Object[] aryCell = listRow.get(i);
					System.out.println("name:" + aryCell[0] + " 数量:"
							+ aryCell[1]);
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if (session != null && session.isOpen()) {
				session.close();
			}
		}
	}
//分页功能
public static void demo6() {
		Session session = null;
		try {
			session = getSession();

			Criteria cri = session.createCriteria(User.class);
			cri.add(Restrictions.like("name", "demo%"));// 其它条件往下加

			ProjectionList plist = Projections.projectionList();
			plist.add(Projections.rowCount());
			cri.setProjection(plist);
			Integer iTotalRecord = (Integer) cri.uniqueResult();//获得总记录数
			System.out.println("总记录数:" + iTotalRecord);

			cri.addOrder(Order.asc("id"));
			cri.setProjection(null);
			
			cri.setFirstResult(0);
			cri.setMaxResults(10);
			List<User> listUser = cri.list();

			if (listUser != null && listUser.size() > 0) {
				System.out.println("数据列表:");
				for (int i = 0; i < listUser.size(); i++) {
					User user = listUser.get(i);
					System.out.println("id:" + user.getId() + "name:"
							+ user.getName());
				}
			}

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if (session != null && session.isOpen()) {
				session.close();
			}
		}
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值