- 浏览: 77068 次
- 性别:
- 来自: 北京
最新评论
-
wteqiao:
[color=orange][/color]
annotation(@Retention) -
hanwesley:
谢谢,我在你的基础之上学习的。感觉还不错。
我理解的lucene原理(初级) -
DepthJava:
一直没找到,能完全解析EMial的方法。包括MIME解析
乱 ...
MIME协议分析(转) -
hardPass:
能看看你的mvc-config.xml 啊?
自制MVC框架:TonyMVC -
geek87:
非常好的资料..支持一下
spring2.5 注解技术
[code="java"]import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;
import java.util.LinkedHashMap;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
@Transactional
public abstract class DaoSupport implements DAO{
@PersistenceContext protected EntityManager em;
public void clear(){
em.clear();
}
public void delete(Class entityClass,Object entityid) {
delete(entityClass, new Object[]{entityid});
}
public void delete(Class entityClass,Object[] entityids) {
for(Object id : entityids){
em.remove(em.getReference(entityClass, id));
}
}
@Transactional(readOnly=true,propagation=Propagation.NOT_SUPPORTED)
public T find(Class entityClass, Object entityId) {
return em.find(entityClass, entityId);
}
public void save(Object entity) {
em.persist(entity);
}
@Transactional(readOnly=true,propagation=Propagation.NOT_SUPPORTED)
public long getCount(Class entityClass) {
return (Long)em.createQuery("select count("+ getCountField(entityClass) +") from "+ getEntityName(entityClass)+ " o").getSingleResult();
}
public void update(Object entity) {
em.merge(entity);
}
@Transactional(readOnly=true,propagation=Propagation.NOT_SUPPORTED)
public QueryResult getScrollData(Class entityClass,
int firstindex, int maxresult, LinkedHashMap orderby) {
return getScrollData(entityClass,firstindex,maxresult,null,null,orderby);
}
@Transactional(readOnly=true,propagation=Propagation.NOT_SUPPORTED)
public QueryResult getScrollData(Class entityClass,
int firstindex, int maxresult, String wherejpql, Object[] queryParams) {
return getScrollData(entityClass,firstindex,maxresult,wherejpql,queryParams,null);
}
@Transactional(readOnly=true,propagation=Propagation.NOT_SUPPORTED)
public QueryResult getScrollData(Class entityClass, int firstindex, int maxresult) {
return getScrollData(entityClass,firstindex,maxresult,null,null,null);
}
@Transactional(readOnly=true,propagation=Propagation.NOT_SUPPORTED)
public QueryResult getScrollData(Class entityClass) {
return getScrollData(entityClass, -1, -1);
}
@SuppressWarnings("unchecked")
@Transactional(readOnly=true,propagation=Propagation.NOT_SUPPORTED)
public QueryResult getScrollData(Class entityClass, int firstindex, int maxresult
, String wherejpql, Object[] queryParams,LinkedHashMap orderby) {
QueryResult qr = new QueryResult();
String entityname = getEntityName(entityClass);
Query query = em.createQuery("select o from "+ entityname+ " o "+(wherejpql==null? "": "where "+ wherejpql)+ buildOrderby(orderby));
setQueryParams(query, queryParams);
if(firstindex!=-1 && maxresult!=-1) query.setFirstResult(firstindex).setMaxResults(maxresult);
qr.setResultlist(query.getResultList());
query = em.createQuery("select count("+ getCountField(entityClass)+ ") from "+ entityname+ " o "+(wherejpql==null? "": "where "+ wherejpql));
setQueryParams(query, queryParams);
qr.setTotalrecord((Long)query.getSingleResult());
return qr;
}
protected void setQueryParams(Query query, Object[] queryParams){
if(queryParams!=null && queryParams.length>0){
for(int i=0; i orderby){
StringBuffer orderbyql = new StringBuffer("");
if(orderby!=null && orderby.size()>0){
orderbyql.append(" order by ");
for(String key : orderby.keySet()){
orderbyql.append("o.").append(key).append(" ").append(orderby.get(key)).append(",");
}
orderbyql.deleteCharAt(orderbyql.length()-1);
}
return orderbyql.toString();
}
//获得实体名称
protected String getEntityName(Class entityClass){
String entityname = entityClass.getSimpleName();
Entity entity = entityClass.getAnnotation(Entity.class);
if(entity.name()!=null && !"".equals(entity.name())){
entityname = entity.name();
}
return entityname;
}
protected String getCountField(Class clazz){
String out = "o";
try {
PropertyDescriptor[] propertyDescriptors = Introspector.getBeanInfo(clazz).getPropertyDescriptors();
for(PropertyDescriptor propertydesc : propertyDescriptors){
Method method = propertydesc.getReadMethod();
if(method!=null && method.isAnnotationPresent(EmbeddedId.class)){
PropertyDescriptor[] ps = Introspector.getBeanInfo(propertydesc.getPropertyType()).getPropertyDescriptors();
out = "o."+ propertydesc.getName()+ "." + (!ps[1].getName().equals("class")? ps[1].getName(): ps[0].getName());
break;
}
}
} catch (Exception e) {
e.printStackTrace();
}
return out;
}
}
QueryResult
[code="java"]public class QueryResult {
private List resultlist;
private long totalrecord;
public List getResultlist() {
return resultlist;
}
public void setResultlist(List resultlist) {
this.resultlist = resultlist;
}
public long getTotalrecord() {
return totalrecord;
}
public void setTotalrecord(long totalrecord) {
this.totalrecord = totalrecord;
}
}
发表评论
-
log4j 详细解读与common-logging结合
2009-04-12 21:17 1870Log4J的配置文件(Configuratio ... -
java代码中的serialVersionUID
2009-04-11 17:13 915一些java类中为什么需 ... -
jbpm开发步骤
2009-03-20 14:54 12211 新建一个工程项目 加入jbpm的包 加入H ... -
工作流基础(JBPM)
2009-03-16 19:35 1241网上jbpm教程:开发入门指南 1 流程定义 ... -
QQ留言功能的参考
2009-03-11 19:48 719http://www.tool.la/QQCode/ 在这个网 ... -
U盘装系统,甩掉光驱吧!
2009-02-22 09:24 1167U盘装系统,甩掉光驱吧! 注意:当把winpe放入到u盘 ... -
jbpm的启动cache 异常
2009-02-19 18:41 770jbpm的缓存问题。: http://hi.baidu.c ... -
dom4j
2009-02-17 19:15 918Document document = new SAXRead ... -
pager-taglib分页工具
2009-02-16 15:26 2785引用尚学堂paper-taglib的文章: 1、拷贝pag ... -
ant介绍
2009-02-11 12:04 1371Ant 是什么? Ant 是一个构建工具 ... -
总结正则表达式
2009-02-08 21:31 720Email : /^\w+([-+.]\w+)*@\w ... -
正则表达式(基础)
2009-02-08 17:55 11401 用途: 字符串匹配 ... -
annotation(@Target @Document @Inherited)
2009-02-07 16:16 1583@Target 使用java.lang.annotation ... -
annotation(@Retention)
2009-02-06 20:50 8723Retention型态可以在您定义Annotation型态时, ... -
annotation(自定义部分)
2009-02-06 18:00 8171 mark类型的annotation public @int ... -
annotation(内置部分)
2009-02-06 11:12 784今天学习了annotation。这个是java1.5中加入的新 ... -
简单分页
2009-02-06 11:07 693分页学了有一段时间做了,今天想起来重新拾起来~~~ 给大家 ... -
Linux下jdk配置
2009-01-18 13:35 710阅读全文 类别:默认分类?查看评论 -
jsp 脚本提示卡问题解决
2008-09-27 08:27 1127http://topic.csdn.net/u/2008061 ...
相关推荐
java几种分页方法java几种分页方法java几种分页方法 java几种分页方法java几种分页方法java几种分页方法 java几种分页方法java几种分页方法java几种分页方法 java几种分页方法java几种分页方法java几种分页方法
本文将详细介绍两种常用的JavaWeb分页方法:基于数据库查询的分页和基于内存的分页。 一、基于数据库查询的分页 1. SQL查询分页: 这种方法直接在SQL查询语句中实现分页。大多数数据库系统如MySQL、Oracle、SQL ...
### 一种高效的ASP+ACCESS分页方法 #### 知识点概述 在Web开发中,尤其是在使用ASP(Active Server Pages)结合ACCESS数据库进行网站构建的过程中,分页技术是非常重要的一个环节。传统的分页方法虽然简单易懂,但...
本篇文章将深入探讨C#中实现分页的几种常见方法,并提供实践指导。 一、SQL Server 分页 在与SQL Server数据库进行交互时,我们可以利用SQL查询语句中的`OFFSET-FETCH`或`TOP`结合`WITH TIES`来实现分页。例如,...
DataList分页技巧方法 DataList分页技巧方法是一种实现DataList和Repeater控件的分页显示的方法。该方法使用PagedDataSource类来实现分页显示。PagedDataSource类是ASP.NET提供的一个功能强大的类,用于实现数据...
### 数据库分页方法 在处理大量数据时,分页技术是提高用户体验、优化系统性能的重要手段之一。本文将深入探讨数据库分页的基本概念、原理以及实现方式,并通过具体的SQL语句示例来帮助读者更好地理解和掌握这一...
对于小规模的数据,可以使用简单的分页方法,但是对于大规模的数据,需要使用更复杂的分页方法来提高性能。本文对不同数据规模的应用环境进行了测试,结果表明,选择合适的分页方法可以提高 Web 应用系统的性能。 5...
### Java通用分页方法解析与应用 在Java开发中,特别是在Web应用中,分页功能是数据展示中不可或缺的一部分。合理的分页不仅能够提升用户体验,还能优化服务器性能,避免一次性加载大量数据导致的延迟和资源消耗。...
通用分页方法接口的设计旨在提供一种标准化的、可复用的解决方案,使得不同的数据访问层(如数据库查询、API调用等)都能够方便地进行数据分页操作。下面我们将详细探讨这个主题。 一、分页的基本概念 分页是指将...
在JSP中,可以使用request对象获取请求参数,例如`pageNo`,然后通过调用后端方法获取到分页数据并传递给JSP页面。在`BeanServlet.java`的示例中,数据被存储到`list`列表中,并通过`request.setAttribute("list", ...
数据库 分页 web编程 最佳的数据库分页方法
在提供的文件列表中,"page1.jpg"和"page2.jpg"可能是示例分页效果的截图,而"调用函数分页_分页方法不错_带省略号"可能是一个包含具体代码实现的文本文件。通过分析这些文件,可以更深入地理解如何在实际项目中应用...
在ASP(Active Server Pages)开发中,处理大量数据时,分页是一种常见的优化手段,尤其在展示如文章列表这样的长内容时。本文将详细介绍如何在ASP中实现...在实际开发中,应根据项目需求和资源限制灵活应用这些方法。
3. **Spring Service层**:在Service层,创建Spring的`PageRequest`对象,包含分页参数,然后调用Repository层的分页查询方法。 4. **Hibernate查询**:Repository层使用Hibernate的分页API,结合`PageRequest`对象...
综上所述,这个"可重用的MVC分页方法"案例通过纯手工的方式展示了如何在ASP.NET MVC中实现分页,同时强调了代码的可复用性和易维护性。通过学习这个案例,开发者可以更好地掌握MVC架构下分页功能的实现技巧。
本压缩包提供了一个分页类,包含四种不同的分页实现方法,适用于前后台应用。以下是这四种方法的详细说明: 1. 基础查询分页 基础查询分页是最常见的分页方式,它通过在SQL查询语句中添加LIMIT和OFFSET关键字来限制...
这个主题,"极限超强百度,谷歌分页方法",涉及到如何高效地处理大量数据并提供用户友好的分页体验。下面将详细介绍这一领域的关键知识点。 首先,分页的目的是为了提高网页加载速度和用户体验。当搜索引擎返回...
### 数据库分页方法概述 在数据库操作中,分页是一项非常重要的技术,尤其是在处理大量数据时,能够有效地提升查询效率和用户体验。本文将详细介绍Oracle、MySQL、SQL Server等常见数据库系统的分页方法。 ### ...
在“24款网页分页方法满足网站需要”这个主题中,我们将探讨各种分页实现方式及其优缺点,帮助开发者根据项目需求选择最适合的方案。 1. 基础样式分页:基础的HTML与CSS结合,通过`<ul>`、`<li>`等元素创建分页链接...
经典Struts2分页方法是Java Web开发者需要掌握的核心技能之一。 分页的实现通常涉及到以下几个关键知识点: 1. **Action类**:在Struts2中,Action类是处理用户请求的中心。为了实现分页,我们需要创建一个包含...