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

/**根据数量来统计*/@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. 获取微软产品下载链接
  2. urllib库添加headers的一般方法
  3. Navicat for MySQL在ubuntu下运行没有反应
  4. 如何将finecms链接URL中的list和show去掉
  5. 什么是光纤放大器?光放大器的原理是什么?
  6. 屋面光伏荷载计算机构,有关光伏发电屋顶荷载以及预判方法
  7. matlab 傅里叶变换时间窗 频率窗,短时傅里叶变换窗函数窗口宽度的选择
  8. 汽车金融信用评分卡模型-论文毕业设计复现
  9. Ubuntu在物理机系统安装和teamviewer安装过程问题和解决的记录
  10. verilog——三八译码器
  11. Twitter群推王的推特自动发帖功能是如何实现的
  12. Windows64Adobe2019/2019全家桶
  13. TF内存卡(SDHC)的传输规范
  14. 手把手教你怎样将win10普通版本升级到最强悍版本win10专业工作站版本
  15. 我的世界(MC)服务器搭建(详细+稳定+崩服自启)
  16. 实体店客户邀新,为什么你给客户返点效果却不好,是哪里出问题了
  17. Mybatis中and和循环or混用 (or转换成in)
  18. redis可以代替mysql 吗_redis是否可以代替mysql
  19. Bootstrap(well页数标签角标巨幕)
  20. ANU COMP2310(2019) Assignment 1

热门文章

  1. 工厂方法模式、简单工厂模式、抽象工程模式
  2. 六个方法帮你写走心的文案
  3. Win7 注册ocx控件 “DllRegisterServer的调用失败,错误代码为0x80040200 ”
  4. 网络安全风险与防范方法
  5. INI配置——《跟我学Shiro》
  6. 网络错误:windows无法访问\\,你没有权限访问\\
  7. Autoware.Auto
  8. 形式与政策部分开卷题目及答案
  9. 减轻梯度消失方法整理
  10. Java基础之匿名内部类,匿名内部类是什么?为什么要用匿名内部类,匿名内部类详解。