Java web 程序优化例子
2017-02-09 08:56
381 查看
标题:Java POI 批量导入功能 双重循环读取数据:
文章地址:http://blog.csdn.net/u014266877/article/details/54378381
示例代码:
Controller:
//循环读取每行所有列数据
dao mapper:
<!-- 批量添加已签接口 -->
接口名 父接口名 子接口名 接口备注 接口分类
标题: Java 实现导出Excel功能
文章地址:http://blog.csdn.net/u014266877/article/details/53691381
示例代码:
标题: 添加修改方法集成, 严格分层 service dao mapper controller
标题: 以写的更少, 做的更多的Jquery思想, 简化分页查询
简单写下SQL思路:
<!-- 查询支付宝充值记录 -->
<select id="queryAlipayRecharge" parameterType="map" resultType="com.chinadatapay.entity.PayMent">
SELECT
<if test="param.start == null and param.end == null">
<!-- 分页 一个方法多用,既能统计数据,又能实现分页查询总数 -->
SUM(money) money, COUNT(*) id
</if>
<if test="(param.start != null or param.start == 0) and (param.end != null or param.end == 0) ">
*
</if>
FROM table
<if test="(param.start != null or param.start == 0) and (param.end != null or param.end == 0)">
ORDER BY memb.createTime DESC
LIMIT #{param.start}, #{param.end}
</if>
</select>
mapper dao service 各减少一个方法 在controller中对service进行再次调用:
文章地址:http://blog.csdn.net/u014266877/article/details/54378381
示例代码:
Controller:
//循环读取每行所有列数据
for (int rowNum = 1; rowNum <= hssfSheet.getLastRowNum(); rowNum++) { XSSFRow hssfRow = hssfSheet.getRow(rowNum); if(hssfRow != null){ List<String> list = new ArrayList<String>(); //将表格自每行数据添加到 list中 (list 集合的数据是有序号的 方便数据对应) for (int i = 0; i < 28; i++) {// 28 代表导入 excel 模板中的列数 XSSFCell xssfCell = hssfRow.getCell(i); //初始化列值(不建议导入数据库对应表添加过多非空校验, 导入数据可能为空) String date = null; //预防空指针 if(xssfCell != null){ //17 列 18 列(下标从0开始 16就是17列)是时间类型, 默认用 String 类型接收 if(i == 16 || i == 17){ date = Common.fromDateY(xssfCell.getDateCellValue()); }else{ date = String.valueOf(xssfCell); } } list.add(date); } //这些数据不是表格中的 保存 登陆用户, 添加时间, 状态, 显示 list.add(1 + ""); list.add(loginAccount); list.add(Common.fromDateH()); list.add(1 + ""); dataMap.put(numSheet, list); } } service: Map<String, Map<Integer, List<String>>> leadingInData = new HashMap<String, Map<Integer, List<String>>>(); @Override public int circleInsertInterface(Map<String, Map<Integer, List<String>>> data) { return interfaceConcludeSignMapper.circleInsertInterface(data); }
dao mapper:
<!-- 批量添加已签接口 -->
<insert id="circleInsertInterface" parameterType="map"> INSERT INTO interface_conclude_sign( interface_name, parent_interface_name, son_interface_name, interface_remark, catalog_name ) VALUES <foreach collection="leadingInData" item="map_item" index="i" separator=","> ( <foreach collection="map_item" item="list_item" index="j" separator=","> #{list_item} </foreach> ) </foreach>excel 表格列(mapper excel 一对一):
接口名 父接口名 子接口名 接口备注 接口分类
标题: Java 实现导出Excel功能
文章地址:http://blog.csdn.net/u014266877/article/details/53691381
示例代码:
/** * @Description 会员资质审核数据导出 * @author <p style="color:#8e8e8e;font-family:微软雅黑;font-size=16px;font-weight:bold;">Cloud</p> * @date <p style="color:#000;font-family:微软雅黑;font-size=16px;">2017-1-5上午10:16:59</p> * @param response 请求头信息 * @param accountName 帐号 * @param type 审核类型 * @param userName 用户名 * @param auditCode 审核状态 * @param auditUser 审核帐号 * @param realName 个人认证名称 * @param companyName 企业认证名称 * @param stDate 开始时间 * @param enDate 结束时间 * @throws Exception */ @RequestMapping(value = "/memberQualification") @ResponseBody public void memberQualification(HttpServletResponse response, String accountName, Integer type, String userName, Integer auditCode, String auditUser, String realName, String companyName, String stDate, String enDate) throws Exception{ Map<String, String> paramMap = new HashMap<String, String>(); // 导出条件 if (accountName != null) { accountName = new String(accountName.getBytes("ISO-8859-1"), "utf-8"); paramMap.put("accountName", accountName); } // 根据条件查询数据 默认为匹配数据前 5 万条 防止数据量超出大小 影响性能 List<Membership> list = membershipQualificationServiceImpl.queryMembershipQualification(paramMap, 50000, 1); if(!list.isEmpty()){// 非空核验 Map<String, Object> dataMap = new HashMap<String, Object>(); dataMap.put("memberQualificaList", list); //导出数据 exportDate(response, "会员资质审核", dataMap, 8); }else { logger.info("导出会员资质审核信息:导出数据为空"); } } /** * @Description 导出数据公用方法 * @author <p style="color:#8e8e8e;font-family:微软雅黑;font-size=16px;font-weight:bold;">Cloud</p> * @date <p style="color:#000;font-family:微软雅黑;font-size=16px;">2017-1-4下午1:56:57</p> * @param response 请求头信息 * @param exportName 导出数据名称 * @param dataMap 导出数据 * @param exportType 导出类型 * @throws Exception 异常信息 */ protected void exportDate(HttpServletResponse response, String exportName, Map<String, Object> dataMap, Integer exportType) throws Exception{ // 第一步,创建一个webbook,对应一个Excel文件 HSSFWorkbook wb = new HSSFWorkbook(); // 第二步,在webbook中添加一个sheet,对应Excel文件中的sheet HSSFSheet sheet = wb.createSheet(exportName); // 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制short HSSFRow row = sheet.createRow((int) 0); // 第四步,设置样式 HSSFCellStyle style = setHeadStyle(row, wb, 500, 10, HSSFFont.BOLDWEIGHT_BOLD); // 第五步,设置导出数据 setExportDate(dataMap, sheet, row, style, exportType); // 第六步,弹出下载框 popDownload(response, wb, exportName + "-" + Common.generateFileName(".csv")); } //详细代码参考我的博客;
标题: 添加修改方法集成, 严格分层 service dao mapper controller
/** * @Description 添加/修改岗位 * @author <p style="color:#8e8e8e;font-family:微软雅黑;font-size=16px;font-weight:bold;">Cloud</p> * @date <p style="color:#000;font-family:微软雅黑;font-size=16px;">2016-12-20下午5:14:42</p> * @param request 请求头信息 * @param quar 岗位信息 * @return 成功/失败信息 */ @RequestMapping(value = "saveQuarters") @ResponseBody public JSONObject saveQuarters(HttpServletRequest request, Quarters quar) { Integer res = 0; try { if (quar.getPost_id() != 0) {// 修改 res = menuServiceImpl.updateQuarters(quar); res = (res > 0 ? 2 : 0); } else {// 添加 User user = (User) request.getSession().getAttribute("USER"); quar.setAdd_user(user.getUserId()); res = menuServiceImpl.insertQuarters(quar); } } catch (Exception e) { e.printStackTrace(); } String returnCode = Common.getReturnCode(res, res); return JSONObject.fromObject(returnCode); }
标题: 以写的更少, 做的更多的Jquery思想, 简化分页查询
简单写下SQL思路:
<!-- 查询支付宝充值记录 -->
<select id="queryAlipayRecharge" parameterType="map" resultType="com.chinadatapay.entity.PayMent">
SELECT
<if test="param.start == null and param.end == null">
<!-- 分页 一个方法多用,既能统计数据,又能实现分页查询总数 -->
SUM(money) money, COUNT(*) id
</if>
<if test="(param.start != null or param.start == 0) and (param.end != null or param.end == 0) ">
*
</if>
FROM table
<if test="(param.start != null or param.start == 0) and (param.end != null or param.end == 0)">
ORDER BY memb.createTime DESC
LIMIT #{param.start}, #{param.end}
</if>
</select>
mapper dao service 各减少一个方法 在controller中对service进行再次调用:
/** * @Description 数据宝接口属性统计 * @param page 页码 * @param rows 页数 * @param account 帐户 * @return */ @RequestMapping(value = "/interfaceAttrCount") @ResponseBody public Map<String, Object> interfaceAttrCount(Integer page, Integer rows, MembershipAccount account) { List<FinanceCount> incomeCount = new ArrayList<FinanceCount>(); List<FinanceCount> incomeList = new ArrayList<FinanceCount>(); Map<String, Object> map = new HashMap<String, Object>(); try { //查询条件 String interfaceName = account.getInterfaceName(); if (Common.isNoEmpty(interfaceName)) { interfaceName = java.net.URLDecoder.decode(interfaceName,"utf-8"); account.setInterfaceName(interfaceName); } //第一次调用 查询总条数 开始、结束 null 不会有 limit 分页 account.setStart(null); account.setEnd(null); incomeCount = archiveCatalogServiceImpl.interfaceAttrCount(account);// 查询总条数 if (page != null && rows != null) { account.setStart((page - 1) * rows); account.setEnd(rows); } else {// 默认分页参数 account.setStart(0); account.setEnd(20); } //第二次调用 分页查询匹配记录 开始、结束 为传入值 limit 分页 incomeList = archiveCatalogServiceImpl.interfaceAttrCount(account); } catch (Exception e) { e.printStackTrace(); } map.put("total",(incomeCount != null && incomeCount.size() > 0) ? incomeCount.get(0).getInterfaceId() : 0); map.put("rows", incomeList); return map; }
相关文章推荐
- NO.47 Web系统性能优化 4.Java、JavaScript程序优化
- 漫谈Java程序的性能优化
- Java程序的性能优化StringBuffer与Vector
- 如何优化JAVA程序开发,提高JAVA性能
- Java程序性能和速度优化实例
- 基础应用:java web三层架构程序实例
- 快速配置你的Java程序到JAWS(Java Web Start)(2)
- 利用 Java Web Start发布你用java程序
- Google Web Toolkit--用Java编写AJAX程序[摘]
- java程序优化
- Java程序性能和速度优化实例
- JAVA程序的性能优化
- Java程序性能和速度优化实例
- Web Application(程序)中的上传打包压缩下载(java)
- Google Web Toolkit--用Java编写AJAX程序
- 谈Java程序的性能优化
- Java Web应用产品安装程序制作方案
- JAVA程序编码优化
- Swing 写的客户端程序在java web start 运行,多语言过程中,JOptionPane.showMessageDialog() 按钮多语言问题
- JAVA WEB 程序乱码问题解决