在网上看了很多教程,不是很明白多表查询究竟是怎么搞的:

/**根据数量来统计*/@Overridepublic List<InStockDetailPage> combobox2Sl( InStockDetailPage isp) {List<InStockDetailPage> nl = new ArrayList<InStockDetailPage>();StringBuffer sql = new StringBuffer();sql.append( "select d.incode from drp_instock d where d.status=1 ");if(isp.getCkid()!=null&&!isp.getCkid().equals("")){sql.append( " and d.rhck='"+isp.getCkid()+"' ");}if(isp.getJsr()!=null&&!isp.getJsr().equals("")){sql.append(" and d.jsr='"+isp.getJsr()+"' ");}if(isp.getRkstart()!=null&&!isp.getRkstart().equals("")){sql.append(" and d.indate >='"+isp.getRkstart()+"' ");}if(isp.getRkend()!=null&&!isp.getRkend().equals("")){sql.append(" and d.indate <='"+isp.getRkend()+"' ");}if(isp.getGys()!=null&&!isp.getGys().equals("")){sql.append( " and d.gys >='"+isp.getGys()+"' ");}String hql = "select t.gid gid,sum(t.num) tsum from drp_instockdetail t where 1=1 and t.inid in ("+sql.toString()+") group by t.gid";JdbcTemplate jt = goodsDao.getJdbcTemplate();List<Map<String, Object>> list=jt.queryForList(hql, new Object[]{});for (Map<String,Object> m :list) {InStockDetailPage isdp = new InStockDetailPage();isdp.setGid(m.get("gid").toString());int num = 0;try {num =Integer.parseInt(m.get("tsum").toString());} catch (Exception e) {num = 0;}isdp.setGname(goodsDao.get(Goods.class, isdp.getGid()).getName());isdp.setGcode(goodsDao.get(Goods.class, isdp.getGid()).getCode());isdp.setDid(UUID.randomUUID().toString());isdp.setTnum(num);nl.add(isdp);}return nl;}
@Overridepublic DataGrid datagrid2TabJe(InStockDetailPage isp) {DataGrid dg = new DataGrid();List<InStockDetailPage> nl = new ArrayList<InStockDetailPage>();StringBuffer sql = new StringBuffer();sql.append( "select d.incode from drp_instock d where d.status=1 ");if(isp.getCkid()!=null&&!isp.getCkid().equals("")){sql.append( " and d.rhck='"+isp.getCkid()+"' ");}if(isp.getJsr()!=null&&!isp.getJsr().equals("")){sql.append(" and d.jsr='"+isp.getJsr()+"' ");}if(isp.getRkstart()!=null&&!isp.getRkstart().equals("")){sql.append(" and d.indate >='"+isp.getRkstart()+"' ");}if(isp.getRkend()!=null&&!isp.getRkend().equals("")){sql.append(" and d.indate <='"+isp.getRkend()+"' ");}if(isp.getGys()!=null&&!isp.getGys().equals("")){sql.append( " and d.gys >='"+isp.getGys()+"' ");}String hql = "select t.gid gid,sum(t.lsum) msum from drp_instockdetail t where 1=1 and t.inid in ("+sql.toString()+") group by t.gid";JdbcTemplate jt = goodsDao.getJdbcTemplate();List<Map<String, Object>> list=jt.queryForList(hql, new Object[]{});for (Map<String,Object> m :list) {InStockDetailPage isdp = new InStockDetailPage();isdp.setGid(m.get("gid").toString());BigDecimal num = new BigDecimal(0);try {num =new BigDecimal(m.get("msum").toString());} catch (Exception e) {num =new BigDecimal(0);}isdp.setDid(UUID.randomUUID().toString());isdp.setMsum(num);nl.add(isdp);}double d = 0;for(InStockDetailPage i : nl){d += i.getMsum().doubleValue();}List<InStockDetailPage> nl2 = new ArrayList<InStockDetailPage>();for(InStockDetailPage i : nl){if(i.getMsum().doubleValue()>0){i.setSzbl(String.format("%.2f", i.getMsum().doubleValue()/d*100)+"%");}else{i.setSzbl("0%");}Goods g = goodsDao.get(Goods.class, i.getGid());i.setGname(g.getName());i.setGcode(g.getCode());nl2.add(i);}dg.setTotal(Long.valueOf(nl.size()));dg.setRows(nl2);return dg;}
@Overridepublic DataGrid datagrid2TabSl(InStockDetailPage isp) {DataGrid dg = new DataGrid();List<InStockDetailPage> nl = new ArrayList<InStockDetailPage>();StringBuffer sql = new StringBuffer();sql.append( "select d.incode from drp_instock d where d.status=1 ");if(isp.getCkid()!=null&&!isp.getCkid().equals("")){sql.append( " and d.rhck='"+isp.getCkid()+"' ");}if(isp.getJsr()!=null&&!isp.getJsr().equals("")){sql.append(" and d.jsr='"+isp.getJsr()+"' ");}if(isp.getRkstart()!=null&&!isp.getRkstart().equals("")){sql.append(" and d.indate >='"+isp.getRkstart()+"' ");}if(isp.getRkend()!=null&&!isp.getRkend().equals("")){sql.append(" and d.indate <='"+isp.getRkend()+"' ");}if(isp.getGys()!=null&&!isp.getGys().equals("")){sql.append( " and d.gys >='"+isp.getGys()+"' ");}String hql = "select t.gid gid,sum(t.num) tsum from drp_instockdetail t where 1=1 and t.inid in ("+sql.toString()+") group by t.gid";JdbcTemplate jt = goodsDao.getJdbcTemplate();List<Map<String, Object>> list=jt.queryForList(hql, new Object[]{});for (Map<String,Object> m :list) {InStockDetailPage isdp = new InStockDetailPage();isdp.setGid(m.get("gid").toString());int num = 0;try {num =Integer.parseInt(m.get("tsum").toString());} catch (Exception e) {num = 0;}isdp.setGname(goodsDao.get(Goods.class, isdp.getGid()).getName());isdp.setGcode(goodsDao.get(Goods.class, isdp.getGid()).getCode());isdp.setDid(UUID.randomUUID().toString());isdp.setTnum(num);nl.add(isdp);}double d = 0;for(InStockDetailPage i : nl){d += i.getTnum();}List<InStockDetailPage> nl2 = new ArrayList<InStockDetailPage>();for(InStockDetailPage i : nl){if(i.getTnum()>0){i.setSzbl(String.format("%.2f", i.getTnum()/d*100)+"%");}else{i.setSzbl("0%");}Goods g = goodsDao.get(Goods.class, i.getGid());i.setGname(g.getName());i.setGcode(g.getCode());nl2.add(i);}dg.setTotal(Long.valueOf(nl.size()));dg.setRows(nl2);return dg;}

好了,就这样吧,你若能懂,那就懂了,你若不能,我就自言自语了!

转载于:https://my.oschina.net/wfire/blog/162528

JdbcTemplate的使用相关推荐

  1. 手撸一个JdbcTemplate,带你了解其原理

    前提要求 能够使用jdbc链接数据库 能够利用jdbc完成数据库的增删改查等操作 对泛型有一定的了解 基本原理 通过jdbc链接数据库,查询数据库中内容 利用反射对数据库中查询字段进行封装 步骤 1. ...

  2. SpringBoot (八) :Spring Boot多数据源(JdbcTemplate)配置与使用

    什么是JdbcTemplate 为了使 JDBC 更加易于使用,Spring 在 JDBCAPI 上定义了一个抽象层, 以此建立一个JDBC存取框架. 作为 SpringJDBC 框架的核心, JDB ...

  3. SpringBoot (四) :SpringBoot整合使用JdbcTemplate

    什么是JdbcTemplate 为了使 JDBC 更加易于使用,Spring 在 JDBCAPI 上定义了一个抽象层, 以此建立一个JDBC存取框架. 作为 SpringJDBC 框架的核心, JDB ...

  4. Spring从菜鸟到高手(四)(上)使用JdbcTemplate类实现用户登陆验证、批量更新

    标签:Spring java JdbcTemplate Spring从菜鸟到高手 绝缘材料 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.ht ...

  5. JDBC,JdbcTemplate,JPA傻傻分不清楚

    2019独角兽企业重金招聘Python工程师标准>>> JDBC.JDBCTemplate.MyBatis.Hiberante.Jpa关系概述 JDBC的使用 使用JDBC访问数据库 ...

  6. Spring JdbcTemplate方法详解

    2019独角兽企业重金招聘Python工程师标准>>> Spring JdbcTemplate方法详解 标签: springhsqldbjava存储数据库相关sql 2012-07- ...

  7. Spring JdbcTemplate的queryForList(String sql , ClassT elementType)易错使用--转载

    原文地址: http://blog.csdn.net/will_awoke/article/details/12617383 一直用ORM,今天用JdbcTemplate再次抑郁了一次. 首先看下这个 ...

  8. Spring中jdbcTemplate的用法实例

    一.首先配置JdbcTemplate: 要使用Jdbctemplate 对象来完成jdbc 操作.通常情况下,有三种种方式得到JdbcTemplate 对象.        第一种方式:我们可以在自己 ...

  9. jdbc mysql 返回游标_使用JdbcTemplate流式(游标)读取数据库

    前言 生产环境中经常使用数据库分页的方式来控制一次获取的数据量,而数据处理中经常会有另外一种场景: 从一个数据库表中读取所有数据进行处理并将结果保存在其他数据库或文件或NoSql数据库中. 这时候也可 ...

  10. jdbcTemplate 的update 和batchUpdate 方法的使用

    update 方法 首先来看update 方法     1.  sql的生成: 这个方法有三个实现,每一个方法都包含一个sql 和另外的一个参数 我们就拿第一个方法为例子: 第一个sql 应该怎么写 ...

最新文章

  1. pfSense设置多WAN后,解决网银无法登陆问题
  2. 欧几里得空间——度量矩阵
  3. Java程序员必须知道的Java10特性
  4. solr怎么设置搜索结果排名靠前?
  5. mysql按月分列统计_实现mysql按月统计的教程
  6. c++ auto用法_不想写表达式的类型?试试auto吧
  7. 每日一练丨性能优化-实例优化(三)
  8. 《Algorithms》—— 链表实现栈,队列,背包
  9. Linux下C语言进程通讯编程
  10. 51Nod-2148 字符出现位置【水题】
  11. Rsync的配置与使用
  12. 神奇的数学:牛津教授给青少年的讲座
  13. Apache认证(目录)
  14. 手柄xinput模式_让你的普通手柄变成360手柄(XInputEmulator)下载_让你的普通手柄变成360手柄(XInputEmulator)官方下载-太平洋下载中心...
  15. MOEA/D的通俗解析--1.MOEA
  16. 设置iPhone来电铃声(图文教程)
  17. PDF是如何在线分割的?简单方法介绍
  18. 打印当前python文件出错行
  19. 免费pdf合并在线,这几个神仙网站请收好
  20. Func:统一网络控制器

热门文章

  1. 原型和原型链和instanceof
  2. Unity3d vector3.forward和transform.forward的区别!
  3. 链表逆序(拷贝和插入)
  4. anki 新的卡片类型_Anki选择题卡片制作详解
  5. 2.5 Web前端:JavaScript5:常用DOM操作
  6. spring-xxx-xxx-0.0.1-SNAPSHOT.jar中没有主清单属性完美解决
  7. 深度学习中的正则化方法
  8. 谈及区块链,我们脑海当中首先浮现出来的是,狂热、浮躁的场景
  9. Nginx负载均衡策略 - least_conn 最少连接
  10. Microsoft Product Support's Reporting Tools