大学生就业管理系统详细设计说明书2Word文档格式.docx

上传人:b****4 文档编号:18086249 上传时间:2022-12-13 格式:DOCX 页数:34 大小:24.47KB
下载 相关 举报
大学生就业管理系统详细设计说明书2Word文档格式.docx_第1页
第1页 / 共34页
大学生就业管理系统详细设计说明书2Word文档格式.docx_第2页
第2页 / 共34页
大学生就业管理系统详细设计说明书2Word文档格式.docx_第3页
第3页 / 共34页
大学生就业管理系统详细设计说明书2Word文档格式.docx_第4页
第4页 / 共34页
大学生就业管理系统详细设计说明书2Word文档格式.docx_第5页
第5页 / 共34页
点击查看更多>>
下载资源
资源描述

大学生就业管理系统详细设计说明书2Word文档格式.docx

《大学生就业管理系统详细设计说明书2Word文档格式.docx》由会员分享,可在线阅读,更多相关《大学生就业管理系统详细设计说明书2Word文档格式.docx(34页珍藏版)》请在冰豆网上搜索。

大学生就业管理系统详细设计说明书2Word文档格式.docx

返回ResultSet查询结果

方法名称:

ResultSetexecSql(Stringsql)

由Statement对象stmt执行sql数据更新操作(包括新增、修改)

返回ResultSet数据更新操作结果

3.2技能维护

3.2.1类HibernateDao.java的设计/**

*Copyright(c)2005-2009

*

*LicensedundertheApacheLicense,Version2.0(the"

License"

);

*$Id:

HibernateDao.java4412009-09-0715:

47:

34Zcalvinxiu$

*/

packagecom.zds.spring.dao.base;

importjava.io.Serializable;

importjava.util.ArrayList;

importjava.util.List;

2

importjava.util.Map;

importmons.lang.StringUtils;

importorg.hibernate.Criteria;

importorg.hibernate.Query;

importorg.hibernate.SessionFactory;

importorg.hibernate.criterion.CriteriaSpecification;

importorg.hibernate.criterion.Criterion;

importorg.hibernate.criterion.Disjunction;

importorg.hibernate.criterion.MatchMode;

importorg.hibernate.criterion.Order;

importorg.hibernate.criterion.Projection;

importorg.hibernate.criterion.Projections;

importorg.hibernate.criterion.Restrictions;

importorg.hibernate.impl.CriteriaImpl;

importorg.hibernate.transform.ResultTransformer;

importorg.springframework.util.Assert;

importorg.springside.modules.orm.PropertyFilter;

importorg.springside.modules.orm.PropertyFilter.MatchType;

importorg.springside.modules.utils.ReflectionUtils;

importmon.page.Page;

//importmon.page.PropertyFilter;

//importmon.page.PropertyFilter.MatchType;

/**

*封装SpringSide扩展功能的HibernatDAO泛型基类.

*扩展功能包括分页查询,按属性过滤条件列表查询.

*可在Service层直接使用,也可以扩展泛型DAO子类使用,见两个构造函数的注释.

*@param<

T>

DAO操作的对象类型

PK>

主键类型

*@authorcalvin

publicclassHibernateDao<

T,PKextendsSerializable>

extendsSimpl

eHibernateDao<

T,PK>

{

*用于Dao层子类使用的构造函数.

*通过子类的泛型定义取得对象类型Class.

*eg.

*publicclassUserDaoextendsHibernateDao<

User,Long>

{

*}

3

publicHibernateDao(){

super();

}

*用于省略Dao层,Service层直接使用通用HibernateDao的构造函数.

*在构造函数中定义对象类型Class.

*HibernateDao<

userDao=newHibernateDao<

User,

Long>

(sessionFactory,User.class);

publicHibernateDao(finalSessionFactorysessionFactory,final

Class<

entityClass){

super(sessionFactory,entityClass);

//分页查询函数//

*分页获取全部对象.

publicPage<

getAll(finalPage<

page){

returnfindPage(page);

*按HQL分页查询.

*@parampage分页参数.不支持其中的orderBy参数.

*@paramhqlhql语句.

*@paramvalues数量可变的查询参数,按顺序绑定.

*@return分页查询结果,附带结果列表及所有查询时的参数.

@SuppressWarnings("

unchecked"

findPage(finalPage<

page,finalStringhql,

finalObject...values){

Assert.notNull(page,"

page不能为空"

Queryq=createQuery(hql,values);

4

if(page.isAutoCount()){

longtotalCount=countHqlResult(hql,values);

page.setTotalCount(totalCount);

setPageParameter(q,page);

Listresult=q.list();

page.setResult(result);

returnpage;

*@parampage分页参数.

*@paramvalues命名参数,按名称绑定.

finalMap<

String,Object>

values){

*按Criteria分页查询.

*@paramcriterions数量可变的Criterion.

5

*@return分页查询结果.附带结果列表及所有查询时的参数.

page,finalCriterion...

criterions){

Criteriac=createCriteria(criterions);

inttotalCount=countCriteriaResult(c);

setPageParameter(c,page);

Listresult=c.list();

*设置分页参数到Query对象,辅助函数.

protectedQuerysetPageParameter(finalQueryq,finalPage<

page){

//hibernate的firstResult的序号从0开始

q.setFirstResult(page.getFirst()-1);

q.setMaxResults(page.getPageSize());

returnq;

*设置分页参数到Criteria对象,辅助函数.

protectedCriteriasetPageParameter(finalCriteriac,final

Page<

c.setFirstResult(page.getFirst()-1);

c.setMaxResults(page.getPageSize());

if(page.isOrderBySetted()){

String[]orderByArray=StringUtils.split(page.getOrderBy

(),'

'

6

String[]orderArray=StringUtils.split(page.getOrder(),'

Assert.isTrue(orderByArray.length==orderArray.length,"

分页多重排序参数中,排序字段与排序方向的个数不相等"

for(inti=0;

i<

orderByArray.length;

i++){

if(Page.ASC.equals(orderArray[i])){

c.addOrder(Order.asc(orderByArray[i]));

}else{

c.addOrder(Order.desc(orderByArray[i]));

returnc;

*执行count查询获得本次Hql查询所能获得的对象‎‎总数.

*本函数只能自动处理简单的hql语句,复杂的hql查询请另行编写count语句查询.

protectedlongcountHqlResult(finalStringhql,finalObject...values){

Longcount=0L;

StringfromHql=hql;

//select子句与orderby子句会影响count查询,进行简单的排除.

fromHql="

from"

+StringUtils.substringAfter(fromHql,"

from"

fromHql=StringUtils.substringBefore(fromHql,"

orderby"

StringcountHql="

selectcount(*)"

+fromHql;

try{

count=findUnique(countHql,values);

}catch(Exceptione){

thrownewRuntimeException("

hqlcan'

tbeautocount,hqlis:

"

+countHql,e);

returncount;

7

protectedlongcountHqlResult(finalStringhql,finalMap<

+StringUtils.substringAfter(fromHql,‎‎

*执行count查询获得本次Criteria查询所能获得的对象总数.

protectedintcountCriteriaResult(finalCriteriac){

CriteriaImplimpl=(CriteriaImpl)c;

//先把Projection、ResultTransformer、OrderBy取出来,清空三者后再执行Count操作

Projectionprojection=impl.getProjection();

ResultTransformertransformer=impl.getResultTransformer();

List<

CriteriaImpl.OrderEntry>

orderEntries=null;

orderEntries=(List)ReflectionUtils.getFieldValue(impl,"

orderEntries"

ReflectionUtils.setFieldValue(impl,"

newArrayList());

logger.error("

不可能抛出的异常:

{}"

e.getMessage());

//执行Count查询

inttotalCount=(Integer)c.setProjection(Projections.rowCount()).uniqueResult();

//将之前的Projection,ResultTransformer和OrderBy条件重新设回去

c.setProjection(projection);

if(projection==null){

c.setResultTransformer(CriteriaSpecification.ROOT_ENTITY);

8

if(transformer!

=null){

c.setResultTransformer(transformer);

orderEntries);

returntotalCount;

//属性过滤条件查询函数//

*按属性查找对象列表,支持多种匹配方式.

*@parammatchType匹配方式,目前支持的取值见PropertyFilter的MatcheTypeenum.

publicList<

findBy(finalStringpropertyName,finalObjectvalue,finalMatchTypematchType){

Criterioncriterion=buildPropertyFilterCriterion(propertyName,value,value.getClass(),matchType);

returnfind(criterion);

*按属性过滤条件列表查找对象列表.

find(List<

PropertyFilter>

filters){

Criterion[]criterions=buildPropertyFilterCriterions(filters);

returnfind(criterions);

*按属性过滤条件列表分页查找对象.

page,finalList<

returnfindPage(page,criterions);

*按属性条件列表创建Criterion数组,辅助函数.

9

protectedCriterion[]buildPropertyFilterCriterions(finalList<

Criterion>

criterionList=newArrayList<

();

for(PropertyFilterfilter:

if(!

filter.isMultiProperty()){//只有一个属性需要比较的情况.

Criterioncriterion=buildPropertyFilterCriterion(filter.getPropertyName(),filter.getPropertyValue(),

filter.getPropertyType(),filter.getMatchType());

criterionList.add(criterion);

}else{//包含多个属性需要比较的情况,进行or处理.

Disjunctiondisjunction=Restrictions.disjunction();

for(Stringparam:

filter.getPropertyNames()){

Criterioncriterion=buildPropertyFilterCriterion(param,filter.getPropertyValue(),filter.getPropertyType(),filter.getMatchType());

disjunction.add(criterion);

criterionList.add(disjunction);

ReturncriterionList.toArray(newCriterion[criterionList.size()]);

*按属性条件参数创建Criterion,辅助函数.

protectedCriterionbuildPropertyFilterCriterion(finalStringpropertyName,finalObjectpropertyValue,

finalClass<

?

>

propertyType,finalMatchTypematchType){

Assert.hasText(propertyName,"

propertyName不能为空"

Criterioncriterion=null;

//按entityproperty中的类型将字符串转化为实际类型.

ObjectrealValue=Re

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 学科竞赛

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1