manerger层学习___查询

manger层主要使用的是hibernate

hibernate是jdbc的轻量级封装,可以采用面向对象的方法操作数据库,即:ORM;

  1. 查询: 


  2. 查询单个对象,直接拼接SQL,传入一个参数:
    String sql = "SELECT A FROM " + Salary.class.getName() + " A where opTime=" + opTime;
    List<Salary> salaries = searchBySql(Salary.class, sql);
//只想查询出单个对象,通过list.get(0);的方式
public BasicSalary getByUserId(Long userId) {
		if(null==userId){
			return null;
		}
		//String sql = "SELECT A FROM  " +BasicSalary.class.getName()+ " A WHERE A.userId = " + userId + " and A.status= 1" ;
		String sql = "SELECT A FROM  " + BasicSalary.class.getName() + " A WHERE A.userId = " + userId ;
		List<BasicSalary> list = searchBySql(BasicSalary.class, sql);
		if(list.size()>0){
			return list.get(0);
		}
		return null;
	}
     查询一个对象,传入多个参数:
     public String viewMonth(HttpServletRequest request,@PathVariable Long objectId){
		Salary salary=salaryManager.getByObjectId(objectId);
		request.setAttribute("salary", salary);
		return getFileBasePath()+"showMonthSalary";
	}
	
	//Salary salary=salaryManager.getByObjectId(objectId);
	
public T getByObjectId(Serializable objectId) {
	if (null == objectId) {
		return null;
		}
Class entityClass = getActualArgumentType();
StringBuilder sql = new StringBuilder();
sql.append("SELECT A FROM  ").append(entityClass.getName()).append(" A WHERE A.objectId = ?");
		List<T> list = searchBySql(entityClass, sql.toString(), new Object[] { objectId });
		if (list.size() > 0) {
			return list.get(0);
		}
		return null;
	}
     
    // List<T> list = searchBySql(entityClass, sql.toString(), new Object[] { objectId });
    
    public <A> List<A> searchBySql(Class<A> entity, String sql, Object... params) {
		Query query = getSession().createQuery(sql);
		int i = 0;
		for (Object object : params) {
			query.setParameter(i++, object);
		}
		return query.list();
	}
//查询多个对象的个别字段,而不是需要把整个对象都查出来
public Map<Long, String> queryUserDepartment(){
		Map<Long, String> userIdMap=new HashMap<Long, String>();
		
		String query2="select U.objectId,D.name from " + User.class.getName() + " as U," + Department.class.getName() + " as D "
				 + "WHERE U.departmentId = D.objectId";

		List<Object[]> result=this.getSession().createQuery(query2).list();
		
		for(Object[] obj:result){
				userIdMap.put((Long)obj[0], (String)obj[1]);
		}
		
		return userIdMap;
	}
	
	//String query2="select U.objectId,D.name from " + User.class.getName() + " as U," + Department.class.getName() + " as D "+ "WHERE U.departmentId = D.objectId";


你可能感兴趣的:(manerger层学习___查询)