• hibernate返回map结果


    在我们公司的项目中,代码过于老旧,hibernate返回的结果是数组而不是map或者数据表对象。
    这会导致一个问题,我们需要通过数据得下标获取数据,我觉得这很不便于维护,数据量过多的时候,过多的下标容易导致各种问题。
    我的目标是hibernate返回一个map,我可以通过key进行获取数据,或者呢,直接把map转成对象,这样子更健壮一些
    代码:

    /**
    	 * 分页查询,返回结果为map<br>
    	 * @param pageData 分页对象
    	 * @param originalSql 原始的查询sql
    	 * @param needCount 是否需要计数
    	 * @return
    	 */
    	@SuppressWarnings("unchecked")
    	private PageData<Map<String, Object>> listPageBySql(PageData<Map<String, Object>> pageData, String originalSql, boolean needCount) {
    		
    		if (pageData == null) { // 判断数据是否为空
    			pageData = new PageData<Map<String, Object>>();
    		}
    
    		if (needCount && pageData.getTotalCount() == 0 ) { // 需要进行count查询语句,拼接外层sql
    			StringBuilder countSql = new StringBuilder("select count(*) from ( ");
    			countSql.append(originalSql);							
    			countSql.append(" ) t_count ");
    			SQLQuery countQuery = getSession().createSQLQuery(countSql.toString());
    			Object count = countQuery.uniqueResult();
    			pageData.setTotalCount(Integer.valueOf(String.valueOf(count)));
    			if (pageData.getTotalCount() == 0) {
    				pageData.setResult(new ArrayList<Map<String, Object>>());
    				return pageData;
    			}
    		} else {
    			pageData.setTotalCount(pageData.getTotalCount());
    		}
    		
    		// 设置返回结果为map,而不是Object[]
    		SQLQuery query = getSession().createSQLQuery(originalSql);
    		query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
    		
    		// 设置页码
    		query.setFirstResult((pageData.getPageNo()-1)*pageData.getPageSize());
    		query.setMaxResults(pageData.getPageSize());
    		
    		// 查询结果
    		List<Map<String, Object>> resultList = query.list();
    		
    		pageData.setResult(resultList);
    		return pageData;
    	}
    
  • 相关阅读:
    SQL UNION 和 UNION ALL 操作符
    JavaScript--验证码随机生成
    C#基础 out和ref
    远程连接身份验证错误,又找不到加密Oracle修正
    ASP.Net WebAPI -- 简单实现增删改查
    SpringBoot发送邮箱验证码
    VMware虚拟机安装Linux系统详细教程
    SpringBoot实现登陆拦截
    JavaScript 实例、构造函数、原型对象关系图
    JavaScript创建对象的几种方式总结
  • 原文地址:https://www.cnblogs.com/season-qd/p/13905542.html
Copyright © 2020-2023  润新知