`

多个实体类进行分页查询

    博客分类:
  • hpql
阅读更多
1>这种查询只能查询3个及3个以下的实体类。

public PaginationSupport fingEntity(int type, int pageSize,
			int startIndex) {
String jpql = " from AA a,BB b,CC c";
jpql += " where a.id=b.id and b.e_id= c.id";
		
PaginationSupport ps = this.selectPage(jpql, pageSize, startIndex);
return ps;	
}

@Override
public List getList() {
// TODO Auto-generated method stub
String jpql = " select a.e_name,lp FROM AA a,PP lp WHERE a.id = lp.e_id  ";
//System.out.println("jpql:"+jpql);
List list = this.select(jpql);	

return list;
}

@Override
public PaginationSupport selectPage(String jpql, int pageSize,
			int startIndex) {
		int totalCount = selectCount(jpql);
		if (totalCount < 1)
			return new PaginationSupport(new ArrayList(0), 0);
		Query query = entityManager.createQuery(jpql);
		List items = query.setFirstResult(startIndex).setMaxResults(pageSize).getResultList();
		PaginationSupport ps = new PaginationSupport(items, totalCount, pageSize, startIndex);
		return ps;
	}


2> 查询实体涉及4个及4个以上,可以采用以下方法:


@Override
public PaginationSupport findEnterpriseList(int is_submit,String real_name, int pageSize,int currentPage) {
String jpql ="SELECT enter.id,enter.e_name,u.real_name, u.telephone_number, u.mailbox ,";
jpql+= " FROM (SELECT * FROM EE) enter  " ;		
jpql+= " LEFT JOIN (SELECT * FROM UU ) u ON enter.id = u.e_id ";		   
jpql+= " LEFT JOIN (SELECT * FROM MM) manu ON enter.id = manu.e_id";
jpql+= " LEFT JOIN (SELECT * FROM NS ) ns ON enter.id = ns.id ";		
jpql+= " WHERE enter.is_submit = ? " ;
if(!"".equals(real_name)){
jpql+=" AND u.real_name LIKE '%"+real_name+"%' ";
}
jpql+= "ORDER BY enter.id DESC ";		
		
Object[] objects = {is_submit};
try{
Map<String,Class> clazz=new HashMap<String,Class>();
PaginationSupport ps = this.selectPageSql(jpql, clazz, pageSize, currentPage,objects);	
return ps;
}catch(Exception e){
	e.printStackTrace();
}
return null;
}



daoImpl:

@Override
	public PaginationSupport selectPageSql(String jpql,
			Map<String, Class> entity, int pageSize, int startIndex,
			Object... objects) {
			int count=0;
		
		Session session = (Session)entityManager.getEntityManagerFactory().createEntityManager().getDelegate();
		SQLQuery query=session.createSQLQuery(jpql);
		for(String classname:entity.keySet()){
			query.addEntity(classname, entity.get(classname));
		}
		for (int i = 0; i < objects.length; i++) {
			query.setParameter(i, objects[i]);
		}
		count= query.list().size();
		List items = query.setFirstResult(startIndex).setMaxResults(pageSize).list();
		PaginationSupport ps = new PaginationSupport(items, count, pageSize, startIndex);
		return ps;
	}




推荐下开的淘宝小店筱夜宫主(http://xiaoyegongzhu.taobao.com/)DR.HU 胡博士美妆~坐在电脑旁的汉子姑娘注意脸部护理呀,做了程序媛,也要美丽啊。。。小店有优惠码:YE4450,报优惠码,抵两元券,(⊙o⊙)…
分享到:
评论

相关推荐

    C#数据实体类中如何给属性赋值

    数据实体类中如何给属性赋值.因为从数据库中取出来的是一个DataSet如果一个一个给数据实体类中的属性赋值显的非常的笨拙,而且我们的数据表多达100...首先我们做个实体类Class1,那我们怎么找到他并赋值呢? QQ:292258449

    pagehelper分页

    例如,一个课程对应多个学生,而一个学生也可以对应多个课程。在这种情况下,我们可以使用PageHelper来实现多对多的嵌套查询。 首先,我们需要修改实体类,添加中间表实体类。然后,我们可以创建接口和映射文件来...

    Hibernate中HQL语句的使用[参考].pdf

    Hibernate中HQL语句的使用 ...HQL语句可以用于各种查询场景,包括简单属性查询、多个属性的查询、使用别名、实体对象查询、外置命名查询、查询过滤器、分页查询、对象导航查询、连接查询和统计查询等。

    简单的EntityFramework4.3+三层+DTO 简单Demo

    简单的EntityFramework4.3+三层+DTO,如果需要简化版的,我的资源里有一个不含DTO的版本。...4、实体类的增删改查,包括分页查询和多重条件查询 5、实体类与DTO的转换,Mapping配置 需要的DLL文件都在packages文件夹中

    EntityFramework4.3+三层 简单Demo(不喊DTO)

    简单的EntityFramework4.3+三层,这个版本不含DTO,如果需要有DTO的,请到我的资源里找。 这个Demo的主要功能是: ...4、实体类的增删改查,包括分页查询和多重条件查询 需要的DLL文件都在packages文件夹中

    MyBatis拦截器实现分页功能的实现方法

    使用拦截器拦截原始的sql,然后加上分页查询的关键字和属性,拼装成新的sql语句再交给mybatis去执行。 除了业务代码之外,需要写的东西不多,提几个关键的: 1、分页对象Page类。给该对象设置一个当前页数(前端给...

    spring-boot-集成mybatis带分页page

    同一个类如果使用了不同的类加载器,就会产生这样的错误,所以解决方案就是让通用Mapper和实体类使用相同的类加载器即可。 DevTools 默认会对 IDE 中引入的所有项目使用 restart 类加载器,对于引入的 jar 包使用 ...

    VB/C#.Net实体代码生成工具(EntitysCodeGenerate)【ECG】4.6

    目前直接支持Oracle、SqlServer、Sybase、DB2、Access、MySQL、SQLite、PostgreSQL、DM(达梦)、OleDb和Custom(自定义)类型的数据库、PowerDesigner文件,同时也支持Informix、...,并支持自定义分页查询(Skip/Take)...

    Foundation 分页

    如果你的网页有很多内容,就需要使用分页功能。 要创建一个基础的分页功能需要在 元素上加上 .pagination 类: 实例   1   2   3   4   5 当前页面 可以在 加上 .current 类来标注当前页面: 实例   ...

    MybatisPlus是⼀个MyBatis的增强⼯具

    代码生成器:MybatisPlus 提供了一个代码生成器工具,可以根据数据库表结构自动生成实体类、Mapper 接口以及 Service 类,极大地减少了手动编写重复代码的工作量。 通用的条件构造器:MybatisPlus 提供了方便的条件...

    C#常用公共类源码(100多个)可以直接使用.rar

    ,RDLC直接打印帮助类,ResourceManager,RMB,SqlHelper,SQL语句拦截器,URL的操作类,VerifyCode,XML操作类,上传下载,二维码操作类,共用工具类,其他,分词辅助类,分页 ,加密解密,压缩解压缩,各种验证帮助类,图片,图片操作...

    solrj的facet查询总结

    Facet 字段通过在请求中加入”facet.field”参数加以声明,如果需要对多个字段进行 Facet 查询,那么将该参数声明多次。例如:/select?q=联想&facet=on&facet.field=cpu&facet.field=videoCard 返回结果为:...

    kellerMapper.jar

    BaseEntity.java:所有实体类的父类,提供了自定义查询条件、分页查询、排序的扩展 BaseException.java:自定义异常,在通用 Mapper 运行过程中抛出的异常 BaseMapper.java:所有 Mapper 的父类,提供了通用 ...

    mybatis知识点.docx

    * collection:用于处理一个对象中包含多个对象的情况,可以使用级联属性或 collection 标签来封装结果集。 五、延迟加载 MyBatis 提供了延迟加载功能,只需配置一下就可以实现延迟加载。延迟加载可以减少数据库...

    magic-api:magic-api是一个接口快速开发框架,通过Web页编写脚本以及配置,自动映射为HTTP接口,无需定义控制器,服务,Dao,Mapper,XML,VO等Java对象

    支持分页查询以及自定义分页查询 支持多数据源配置,支持运行时动态添加数据源 支持SQL缓存,以及自定义SQL缓存 支持SQL拦截,自定义分页方言,自定义列名转换 支持自定义JSON结果,自定义分页结果 支持对接口权限...

    PDF.NET 数据开发框架V3.0源码

    * 类似LINQ的支持ORM实体类查询的OQL表达式(有了LINQ为啥还要搞一个OQL?本框架 OQL的基本设计在LINQ或者说本人知道 LINQ之前,另外,.NET3.5框架才正式支持LINQ,而我们公司的一个产品却因为采用了3.5框架安装部署...

    超级多的C#辅助类大全

    超级多的C#辅助类大全 网上有各式各样的帮助类,公共类,但是比较零碎,经常有人再群里或者各种社交账号上问有没有这个helper,那个helper,于是萌生了收集全部helper的念头,以便日后使用。各式各样的几乎都能找到,...

    PDF.NET数据开发框架V3.0演示版

    * 类似LINQ的支持ORM实体类查询的OQL表达式(有了LINQ为啥还要搞一个OQL?本框架 OQL的基本设计在LINQ或者说本人知道 LINQ之前,另外,.NET3.5框架才正式支持LINQ,而我们公司的一个产品却因为采用了3.5框架安装...

    VB/C#.Net实体代码生成工具(EntitysCodeGenerate)【ECG】4.4

    目前直接支持Oracle、SqlServer、Sybase、DB2、Access、MySQL、SQLite、PostgreSQL、DM(达梦)、OleDb和Custom(自定义)类型的数据库、PowerDesigner文件,同时也支持Informix、...,并支持自定义分页查询(Skip/Take)...

    1000道互联网Java架构师面试题

    下面,我们将从多个角度来探索 MyBatis,了解它的优点、缺点、使用场合、与其他框架的区别、配置文件的写法、参数传递、动态 SQL 等。 什么是 MyBatis? MyBatis 是一个 Java 持久层框架,允许开发者使用 SQL 语句...

Global site tag (gtag.js) - Google Analytics