2019-11-14 14:41

Hibernate5.3 criteria使用

王姐姐

JavaEE

(1252)

(0)

收藏

hibernate 使用where 条件查询:

public Department queryDepartmentById (int id) {
        // 获得hibernate session
		Session session = HibernateUtils.getSession();
        // 获得事物
		Transaction transaction = session.getTransaction();
		try {
            // 开启事物
			transaction.begin();
            // 获得CriteriaBuilder 用来创建CriteriaQuery
			CriteriaBuilder builder = session.getCriteriaBuilder();
            // 创建CriteriaQuery 参数为返回结果类型
			CriteriaQuery criteria = builder.createQuery(Department.class);
            // 返会查询表 参数类型为要查询的持久类
			Root root = criteria.from(Department.class);
            // 设置where条件
			criteria.where(builder.equal(root.get("id"), id));
            // 创建query 查询
			Query query = session.createQuery(criteria);
            // 返回结果
			Department department = query.getSingleResult();
			transaction.commit();
			return department;
		} catch (Exception e) {
			e.printStackTrace();
			transaction.rollback();
		}
		return null;
	}

hibernate criteria 统计查询:

/**
	* 查询部门总数
	* 2018年10月11日
	* @return 部门总数
	*/
	public Integer totalDepartment () {
		Session session = HibernateUtils.getSession();
		Transaction transaction = session.getTransaction();
		try {
			transaction.begin();
			CriteriaBuilder builder = session.getCriteriaBuilder();
            // 参数为查询的结果类型
			CriteriaQuery criteria = builder.createQuery(Long.class);
            // 从什么表查询
			Root root = criteria.from(Department.class);
            // 就是sql select 之后的语句 
			criteria.select(builder.count(root));
            // 使用query 实现查询
			Query query = session.createQuery(criteria);
            // 结果集
			Long result = query.uniqueResult();
			transaction.commit();
			return result.intValue();
		} catch (Exception e) {
			e.printStackTrace();
			transaction.rollback();
		}
		return null;
	}


Hibernate5.3帮助文档:

https://docs.jboss.org/hibernate/orm/5.3/userguide/html_single/Hibernate_User_Guide.html

0条评论

点击登录参与评论