`

Manager-service-之Hibernate几种查询方式

    博客分类:
  • J2EE
阅读更多
Manager-service-之Hibernate几种查询方式,在需要情况下配合使用。


如果要用到:普通sql语句
public String getAllSubDepId(Long depId){
		String sql="select t.departmentid as id from department t start with   t.departmentid="+depId+" connect by   prior   t.departmentid=t.fatherdepartmentid";
		Session session = dao.getSessionFactory().getCurrentSession();
		List<Long> list=session.createSQLQuery(sql).addScalar("id",Hibernate.LONG).list();
		String ids="";
		for(int i=0;i<list.size();i++){
			ids=ids+list.get(i);
			if(i<list.size()-1)
				ids=ids+",";
		}
		return ids;
	}








带分页用HQL查询时候:
public Page<IdentityInfo> getViewObjectsNew(Page<IdentityInfo> page,IdentityInfo entity) {
		String hql="from IdentityInfo t where t.delFlag=0 ";
		if(entity.getDepartmentEntity()!=null&&entity.getDepartmentEntity().getDepartmentId()!=null && entity.getDepartmentEntity().getDepartmentId().compareTo(0l)>0){
				hql=hql+" and t.departmentEntity.id="+entity.getDepartmentEntity().getDepartmentId();			
		}else{
			User user=SessionManager.getUserSession();
			String hasAdminRole=roleManager.hasRole(user.getId(), 104l);
			if(hasAdminRole.equals("YES"))
				hql=hql+" ";
			else{
				String ids=departmentManager.getAllSubDepId(user.getDepartment().getId());
				hql=hql+"and t.departmentEntity.id in("+ids+") ";
			}
		}
		hql=hql+" order by t.priority,t.id";
		return dao.find(page, hql,null);
		
	}








用Criterion对象查询方式:
@Transactional(readOnly = true)
	public List<IdentityInfo> getAllIdentityInfo(Page<IdentityInfo> page,IdentityInfo entity) {
		List<Criterion> list = new ArrayList<Criterion>();
		if (entity.getName() != null && entity.getName().trim().length() > 0)
			list.add(Restrictions.like("name", '%' + entity.getName() + '%'));
		
		if (entity.getDepartmentEntity() != null && entity.getDepartmentEntity().getDepartmentId() != null &&entity.getDepartmentEntity().getDepartmentId().compareTo(0l)>0)
			list.add(Restrictions.eq("departmentEntity.departmentId", entity.getDepartmentEntity().getDepartmentId()));
		
		if (list.size() > 0)
			return dao.findByCriteria( list.toArray(new Criterion[list.size()]));
		
		else
			return dao.findAll();
	}
	





用对象的第2种形式:
public Page<ResTeam> getObjects(Page<ResTeam> page, ResTeam entity) {
		Criteria critera = dao.getSession().createCriteria(ResTeam.class);
		
		if (entity.getType()!= null && !entity.getType().equals("all")) {
			critera.add(Restrictions.like("type", '%' + StrUtils
					.removedPercent(entity.getType().trim()) + '%'));
		}
		if (entity.getName() != null && entity.getName().trim().length() > 0)
			critera.add(Restrictions.like("name", '%' + StrUtils
					.removedPercent(entity.getName().trim()) + '%'));
		if (entity.getStationInfo() != null) {
			String stationName = entity.getStationInfo().getStationName();
			if (stationName != null && stationName.trim().length() > 0) {
				critera.createAlias("stationInfo", "st");
				critera.add(Restrictions.like("st.stationName", '%' + StrUtils
						.removedPercent(stationName.trim()) + '%'));
			}
		}
		
		if (entity.getBaseOrg() != null && entity.getBaseOrg().getId()!=null)
		{
			critera.createAlias("baseOrg", "base");
			critera.add(Restrictions.eq("base.id", entity.getBaseOrg().getId()));
		}
		
		critera.add(Restrictions.not(Restrictions.eq("delflag", 1)));
		critera.addOrder(Order.desc("createDate"));
		
		return dao.findByCriteria(page, critera);
	}










3种方式对比:
public Page<GroupMember> getViewObjectsNew(Page<GroupMember> page,GroupMember entity) {
		*//********** 这里判断多个,首先部门对象不为空,然后部门对象的ID不为空  **********//*
		//法1:
			if(entity.getDepartmentEntity()!=null&&entity.getDepartmentEntity().getDepartmentId()!=null && entity.getDepartmentEntity().getDepartmentId().compareTo(0l)>0){
				String hql = "from GroupMember t where  t.departmentEntity.departmentId=?";
				return dao.find(page, hql, new Object[]{entity.getDepartmentEntity().getDepartmentId() });
		}else{
			return dao.findAll(page);
		}
		if(entity.getGpsEntity()!=null && entity.getGpsEntity().getId()!=null && entity.getGpsEntity().getId().compareTo(0l)>0){
			String hql="from GroupMember m where m.gpsEntity.id=?";
			return dao.find(page, hql, new Object[]{entity.getGpsEntity().getId()});
		}else{
			return dao.findAll(page);
		}
		
		//法2:
		Criteria criteria=dao.getSession().createCriteria(GroupMember.class);
		if(entity.getGpsEntity()!=null && entity.getGpsEntity().getId()!=null && entity.getGpsEntity().getId().compareTo(0l)>0){
			System.out.println(entity.getGpsEntity().getId()+"   ============manage id");
			criteria.add(Restrictions.eq("gpsEntity.id", entity.getGpsEntity().getId()));
		
		}
		return dao.findByCriteria(page, criteria);
		
	}
	
//法3:
	public Page<GroupMember> getMemberByGroup(Page<GroupMember> page,Long groupId) {
		String hql="from GroupMember t where t.gpsEntity.id=? and t.infoEntity.delFlag=0 order by infoEntity.departmentEntity.parent.divNum,infoEntity.departmentEntity.priority,infoEntity.priority,t.priority";
		//String hql="from GroupMember t where t.gpsEntity.id=? order by t.priority";
		
		return dao.find(page, hql, new Object[]{groupId});
	}

分享到:
评论

相关推荐

    Spring之Spring2.5集成Hibernate3.6

    这篇博客“Spring之Spring2.5集成Hibernate3.6”主要探讨了如何将两个经典的开源框架——Spring 2.5和Hibernate 3.6进行整合,以实现数据持久化的高效管理。 Spring 2.5版本是Spring框架的一个重要里程碑,它引入了...

    Spring 事务配置的五种方式.docx

    在某些复杂应用中,可能需要结合使用上述几种方式。例如,对于一些核心服务使用注解驱动的事务管理,而对于其他辅助服务则采用编程式事务管理。 在配置事务时,通常需要先定义数据源(DataSource),如使用阿里...

    ssmhm源码搭建以及文档资料

    这个框架的全称可能是Spring-SpringMVC-MyBatis-Hibernate-Manager,它整合了这几个流行的开源框架,为开发者提供了一个高效、灵活的开发环境。 1. **Spring框架**:Spring是Java企业级应用的核心框架,它提供了...

    SpringHibernate

    Hibernate作为ORM框架,消除了Java代码与SQL之间的直接交互,提供了一种更加面向对象的方式来操作数据库。它通过将Java类映射到数据库表,使得开发者可以像操作普通对象一样处理数据库数据。Hibernate支持多种数据库...

    Simple-human-resources-application-example:这是人事部门的申请。 它允许用户添加,编辑或删除员工。 使用Hibernate进行对象关系映射的示例

    此外,项目的结构可能包含以下几个关键部分:实体类(Entity)、数据访问对象(DAO)、服务层(Service)和控制器(Controller)。实体类封装了数据;DAO层负责与数据库交互,实现增删改查的基本操作;服务层处理...

    SSH框架整合的详细介绍

    在IT行业中,SSH框架整合是Java Web开发中常用的一种技术栈,它由Struts、Hibernate和Spring三个组件组成,分别负责表现层、持久层和业务层的管理。这篇教程将详细介绍如何将这三个框架整合在一起,实现一个简单的...

    Transaction.rar

    Spring提供两种事务管理方式:编程式事务管理和声明式事务管理。编程式事务管理需要通过编码来控制事务的开始、提交、回滚等操作,而声明式事务管理则更易于维护,它通过在配置或注解中声明事务边界,由Spring自动...

    org.springframework.dao.InvalidDataAccessApiUsageException

    为了避免 `org.springframework.dao.InvalidDataAccessApiUsageException` 的发生,可以采取以下几种解决方案: 1. **显式配置事务管理**: 在Spring的配置文件(例如 `applicationContext.xml`)中显式地配置事务...

    学生管理系统

    SSH(Struts2 + Spring + Hibernate)是一种经典的Java Web开发框架,它由Struts2作为MVC框架、Spring作为依赖注入(DI)容器和事务管理器、Hibernate作为持久层ORM工具组合而成。这个框架组合为开发者提供了一个...

    java_spring_day05.pdf

    Spring框架提供了强大的事务管理机制,支持声明式事务管理和编程式事务管理两种方式。通过Spring事务管理器,开发者可以方便地控制事务的边界,确保数据的一致性和完整性。 **详细内容:** 1. **声明式事务管理:*...

    3大框架结合

    在这个模块中,三大框架的应用可能会涉及用户登录验证(Spring Security)、数据展示(JSP或Thymeleaf模板引擎)、业务逻辑处理(Service层)、数据库操作(Hibernate)以及请求处理(Struts2 Action)等环节。...

    spring osgi相关资源

    Spring OSGi是Spring框架与OSGi(Open Service Gateway Initiative)规范相结合的一种技术,它允许在OSGi容器中运行和管理Spring应用。OSGi是一种模块化系统,为Java应用程序提供了动态部署、版本控制和依赖管理的...

    j2ee chm api ejb jboss maven

    标题中的“j2ee chm api ejb jboss maven”揭示了几个关键的Java企业级开发技术。这里,我们有Java 2 Platform, Enterprise Edition (J2EE)的API,Enterprise JavaBeans (EJB),Java Build Manager (Maven),以及两...

    J2EEWEB开发教材

    ### J2EE Web 开发关键...J2EE 技术栈包含了 Java Servlet、JSP、Spring、Hibernate 和 Struts 等核心组件,这些技术共同构成了企业级应用的基础。通过学习这些技术,开发者可以构建出功能强大且可扩展的 Web 应用。

    Spring事务总结

    &lt;tx:advice id="TestAdvice" transaction-manager="transactionManager"&gt; *" propagation="REQUIRED"/&gt; &lt;!-- 其他方法配置... --&gt; ``` 这里配置了所有以`save`、`del`、`update`、`add`、`find`、`get`和`...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    随着博客人数的增加, Blog 作为一种新的生活方式、新的工作方式、新的学习方式已经被越来越多的人所接受,并且在改变传统的网络和社会结构:网络信息不再是虚假不可验证的,交流和沟通更有明确的选择和方向性,单一...

    SSH框架applicationContext.xml头部文件

    SSH框架是Struts+Spring+Hibernate三个开源框架的组合,是中国开发者对这三个框架整合应用的一种简称。其中Struts负责MVC(Model-View-Controller)模式中的控制器部分,Spring作为一个轻量级的应用上下文容器和依赖...

    面试题问题合集.docx

    Spring 通过代理的方式实现AOP,主要有动态代理(JDK Proxy)和CGLIB两种方式。 ### Shiro 框架的使用 Shiro 是一个Java安全框架,用于身份验证、授权、加密和会话管理。它通过简单的API提供了强大的安全性支持。 ...

    Spring 事务 (二) Spring 声明式事务 配置

    在Spring框架中,事务管理是核心功能之一,它确保了数据操作的一致性和完整性。本文主要探讨Spring声明式事务管理的配置,这是Spring提供的一种简便的事务管理方式,允许开发者在不编写任何事务管理代码的情况下实现...

Global site tag (gtag.js) - Google Analytics