springmvc使用SQL的统计功能

功能的意思是:传一张试卷的ID给我,我统计出该张试卷的(时间,题目,分数);做成三张表给出卷人阅读,让他来判断这张试卷是否合适。(使用springmvc+openjpa)


而前台最主要的是行表头和列表头都不确定。所以在后台就要确定行和列,在用数据库查询的时候用distinct来把从表里面取到的数据去重;

行表头和列表头取到以后,其余的就是统计;根据当前试卷中的题目ID,行表头和列表头(条件并列);题目数用count函数,总时间用sum函数。统计出的数据以什么格式放?才能在前台用el表达式取出来呢?而且要和行表头和列表头对得上。

我先用Map(key,Value)放置每一个数据,key是列表头;然后放置在List中;在用一个Map(Key,Value)放置上一个List,Key就是行表头;最后在用一个List放置上一个Map这样前台取的时候遍历List用key取出行表头所在的那行数据,这样会得到一个List,而List里面又是一个Map在用列表头取出每列的数据这样就对应起来了。相当于

List<Map<Key,List<Map<Key,Value>>>>这样的结构。

最后还有一个合计功能,经过这个合计功能我也懂得了el表达式的另一种用法,就是在两个List中顺序相同的放置对应的值,在前台el遍历的时候可以通过设置varStatus这个值来取出另一个List中的值

把值放在ModelAndView里面,在前台取出。下面是部分源码:


后台

//设置返回对象
		ModelAndView modelAndView = new ModelAndView("/paper/previewpsheet");
		
		
		//定义试卷对象
		Generatedpaper generatedpaper = null;
		
		//获得问题列表
		TypedQuery<Generatedpaper> query= EntityManagerHelper.createQuery("select o from Generatedpaper o where o.paperId=?1",Generatedpaper.class);
		query.setParameter(1, paperId);
		
		//试卷对象获取值
		generatedpaper = query.getSingleResult();
		
		Integer productId =  generatedpaper.getProduct().getProductId();
		
		//获取问题的集合
		List<String> proIdList = Arrays.asList(generatedpaper.getProList().split(","));
		List<String> scorePointList = Arrays.asList(generatedpaper.getPointsList().split(","));
		
		//获取列标签
		TypedQuery<Studylevel> colQuery = EntityManagerHelper.createQuery("select distinct o.problem.studylevel from ProductProblem o where o.id.productId = (?1) and o.id.proId in(?2)",Studylevel.class);
		colQuery.setParameter(1, productId);
		colQuery.setParameter(2, proIdList);
		List<Studylevel> colList = colQuery.getResultList();
		
		//获取行标签
		TypedQuery<Difficulty> rowQuery = EntityManagerHelper.createQuery("select distinct o.problem.difficulty from
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值