/// <summary> /// 根据指定条件删除职位 /// </summary> /// <param name="positionSearcher">职位查询对象</param> /// <param name="tran">中间事务对象</param> public void Delete(PositionSearcher positionSearcher, ICTransaction tran) { PositionSearcher querySearcher = null; HibernateTransaction hTran = null; ISession session = null; HQLQueryParser queryParser = new HQLQueryParser(); StringBuilder query = new StringBuilder(); query.Append("DELETE FROM "); query.Append(" Position "); query.Append("WHERE "); query.Append(" PositionId IN ("); query.Append(" SELECT "); query.Append(" P.PositionId "); query.Append(" FROM "); query.Append(" Position P "); if (positionSearcher != null) { querySearcher = (PositionSearcher)positionSearcher.Clone(); querySearcher.TableName = "P"; if (querySearcher.CurrCompany != null) { querySearcher.CurrCompany.TableName = "C"; query.Append("LEFT JOIN "); query.Append(" P.CurrCompany C "); } if (querySearcher.CurrDepartment != null) { querySearcher.CurrDepartment.TableName = "D"; query.Append("LEFT JOIN "); query.Append(" P.CurrDepartment D "); } } queryParser.SearcherParse(querySearcher); if (!string.IsNullOrEmpty(queryParser.ConditionString)) { query.Append("WHERE "); query.Append(" " + queryParser.ConditionString); } query.Append(")"); if (tran != null) { hTran = (HibernateTransaction)tran; session = hTran.CurrentSession; } else { session = this.CurrentHibernateConfig.GetCurrentSession(); } int effectCount = HibernateHelper.DeleteObjectByHQL(session, query.ToString(), queryParser.ParamCollection); }
/// <summary> /// 查找指定条件的职位分页集合 /// </summary> /// <param name="positionSearcher">职位查询对象</param> /// <param name="pager">分页对象</param> /// <param name="tran">中间事务对象</param> /// <returns>返回查找到的分页集合,包括按条件可查询到的所有记录数和当前分页的对象集合</returns> public PageList<Position> FindList(PositionSearcher positionSearcher, Pager pager, ICTransaction tran) { PositionSearcher querySearcher = null; HibernateTransaction hTran = null; ISession session = null; PageList<Position> pList = new PageList<Position>(); HQLQueryParser queryParser = new HQLQueryParser(); StringBuilder query = new StringBuilder(); query.Append("SELECT "); query.Append(" P "); query.Append("FROM "); query.Append(" Position P "); if (positionSearcher != null) { querySearcher = (PositionSearcher)positionSearcher.Clone(); querySearcher.TableName = "P"; if (querySearcher.CurrCompany != null) { querySearcher.CurrCompany.TableName = "C"; query.Append("LEFT JOIN "); query.Append(" P.CurrCompany C "); } if (querySearcher.CurrDepartment != null) { querySearcher.CurrDepartment.TableName = "D"; query.Append("LEFT JOIN "); query.Append(" P.CurrDepartment D "); } } queryParser.SearcherParse(querySearcher); if (!string.IsNullOrEmpty(queryParser.ConditionString)) { query.Append("WHERE "); query.Append(" " + queryParser.ConditionString); } if (!string.IsNullOrEmpty(queryParser.SortString)) { query.Append("ORDER BY "); query.Append(" " + queryParser.SortString); } if (tran != null) { hTran = (HibernateTransaction)tran; session = hTran.CurrentSession; pList.TotalCount = this.Count(querySearcher, tran); } else { session = this.CurrentHibernateConfig.GetCurrentSession(); pList.TotalCount = this.Count(querySearcher); } if (pager != null) { pList.RecordList = HibernateHelper.FindObjectListByHQL<Position>(session, query.ToString(), queryParser.ParamCollection, pager); } else { pList.RecordList = HibernateHelper.FindObjectListByHQL<Position>(session, query.ToString(), queryParser.ParamCollection); } return pList; }
/// <summary> /// 查询员工数量 /// </summary> /// <param name="employeeSearcher">员工查询对象</param> /// <param name="tran">中间事务对象</param> /// <returns>返回查询到的数量</returns> public long Count(EmployeeSearcher employeeSearcher, ICTransaction tran) { EmployeeSearcher querySearcher = null; HibernateTransaction hTran = null; ISession session = null; HQLQueryParser queryParser = new HQLQueryParser(); StringBuilder query = new StringBuilder(); query.Append("SELECT "); query.Append(" COUNT(*) "); query.Append("FROM "); query.Append(" Employee E "); if (employeeSearcher != null) { querySearcher = (EmployeeSearcher)employeeSearcher.Clone(); querySearcher.TableName = "E"; if (querySearcher.CurrCompany != null) { querySearcher.CurrCompany.TableName = "C"; query.Append("LEFT JOIN "); query.Append(" E.CurrCompany C "); } if (querySearcher.CurrDepartment != null) { querySearcher.CurrDepartment.TableName = "D"; query.Append("LEFT JOIN "); query.Append(" E.CurrDepartment D "); } if (querySearcher.CurrPosition != null) { querySearcher.CurrPosition.TableName = "P"; query.Append("LEFT JOIN "); query.Append(" E.CurrPosition P "); } } queryParser.SearcherParse(querySearcher); if (!string.IsNullOrEmpty(queryParser.ConditionString)) { query.Append("WHERE "); query.Append(" " + queryParser.ConditionString); } if (tran != null) { hTran = (HibernateTransaction)tran; session = hTran.CurrentSession; } else { session = this.CurrentHibernateConfig.GetCurrentSession(); } long count = HibernateHelper.FindUniqueObjectByHQL<long>(session, query.ToString(), queryParser.ParamCollection); return count; }