HQL实践总结

/**
	 * 依据HQL语句和参数数组做HQL查询
	 * @param queryString hql查询语句
	 * @param parameters  查询参数数组(null表是无参数)
	 * @return
	 */
	protected List findByHqlQuery(final String queryString, final Object[] parameters) {
		if(null==parameters){
			return getHibernateTemplate().find(queryString);
		}else{
			return getHibernateTemplate().find(queryString, parameters);
		}
	}
	/**
	 * 根据传入的HQL和参数集执行更新
	 * @param queryString
	 * @param parameters
	 */
	protected void updateByQuery(final String queryString, final Object[] parameters) {
		getHibernateTemplate().execute(new HibernateCallback() {
			public Object doInHibernate(Session session) {
				Query query = session.createQuery(queryString);
				if (parameters != null) {
					for (int i = 0; i < parameters.length; i++) {
						query.setParameter(i, parameters[i]);
					}//--setParam
				}
				query.executeUpdate();
				session.flush();
				return null;
			}
		});
	}
	/**
	 * 根据传入的HQL和参数集执行更新
	 * @param queryString
	 * @param parameters
	 */
	protected void updateBySQLQuery(final String queryString, final Object[] parameters) {
		getHibernateTemplate().execute(new HibernateCallback() {
			public Object doInHibernate(Session session) {
				Query query = session.createSQLQuery(queryString);
				if (parameters != null) {
					for (int i = 0; i < parameters.length; i++) {
						query.setParameter(i, parameters[i]);
					}//--setParam
				}
				query.executeUpdate();
				session.flush();
				return null;
			}
		});
	}
	/**
	 * 根据传入的HQL和参数集执行删除
	 * @param queryString
	 * @param parameters
	 * @return Integer 删除的列数
	 */
	protected Integer deleteByQuery(final String queryString, final Object[] parameters) {
		return (Integer) getHibernateTemplate().execute(new HibernateCallback() {
			public Object doInHibernate(Session session) {
				Query query = session.createQuery(queryString);
				if (parameters != null) {
					for (int i = 0; i < parameters.length; i++) {
						query.setParameter(i, parameters[i]);
					}
				}
				int rowNum = query.executeUpdate();
				session.flush();
				return new Integer(rowNum);
			}
		});
	}


常用的Hql语句
1)更新多个字段的值
update InOutAccount i set i.stateCode=? ,i.checkDate=? ,i.checkOperator=? where i.operNumber=?

你可能感兴趣的:(HQL)