请教一下,代码优化问题,急在线等

问题描述

请教一下,代码优化问题,急在线等
@RequestMapping(value = { "/getaddressmg" })
public ModelAndView getAddressMg(HttpServletRequest request, Model model) {

    ModelAndView view = this.getBaseModelAndView("custom/addressmg/addressmg");

    try {

        CustomInfoBean cb = this.getCurrentUser();
        String customerId = cb.getCustomerId();

        CusAddr cusAddr = new CusAddr();
        cusAddr.setCustomerId(customerId);

        // 获得用户的信息地址
        List<CusAddr> cusAddrList = cusAddrService.getAddrListByNotNUll(cusAddr);

        if (null != cusAddrList) {
            for (CusAddr cus : cusAddrList) {
                //获取省的信息
                String provinceId = cus.getProvinceId();
                if (StringUtils.isNotBlank(provinceId)) {
                    Region regionProvince = new Region();
                    if((Constant.REGION_SOURCE_JD).equalsIgnoreCase(cus.getSource())){
                        regionProvince = regionService.getRegionBySourceregid(cus.getProvinceId(), Constant.REGION_SOURCE_JD);
                    }else if((Constant.REGION_SOURCE_STB).equalsIgnoreCase(cus.getSource())){
                        regionProvince = regionService.getRegionBySourceregid(cus.getProvinceId(), Constant.REGION_SOURCE_STB);
                    }else{
                        regionProvince = regionService.getRegionById(cus.getProvinceId());
                    }
                    if(null == regionProvince){
                        continue;
                    };
                    cus.setProvinceName(regionProvince.getRegionName());
                }
                //获取市的信息
                String cityId = cus.getCityId();
                if (StringUtils.isNotBlank(cityId)) {

                    Region regionCity = regionService.getRegionById(cityId);
                    //Region regionCity = new Region();
                    if((Constant.REGION_SOURCE_JD).equalsIgnoreCase(cus.getSource())){
                        regionCity = regionService.getRegionBySourceregid(cus.getCityId(), Constant.REGION_SOURCE_JD);
                    }else if((Constant.REGION_SOURCE_STB).equalsIgnoreCase(cus.getSource())){
                        regionCity = regionService.getRegionBySourceregid(cus.getCityId(), Constant.REGION_SOURCE_STB);
                    }else{
                        regionCity = regionService.getRegionById(cus.getCityId());
                    }

                    if(null == regionCity){
                        continue;
                    }
                    cus.setCityName(regionCity.getRegionName());
                }
                //获取区的信息
                String districtId = cus.getDistrictId();
                if (StringUtils.isNotBlank(districtId)) {

                    Region regionDistrict = regionService.getRegionById(districtId);
                    //Region regionDistrict = new Region();
                    if((Constant.REGION_SOURCE_JD).equalsIgnoreCase(cus.getSource())){
                        regionDistrict = regionService.getRegionBySourceregid(cus.getDistrictId(), Constant.REGION_SOURCE_JD);
                    }else if((Constant.REGION_SOURCE_STB).equalsIgnoreCase(cus.getSource())){
                        regionDistrict = regionService.getRegionBySourceregid(cus.getDistrictId(), Constant.REGION_SOURCE_STB);
                    }else{
                        regionDistrict = regionService.getRegionById(cus.getDistrictId());
                    }
                    if(null == regionDistrict){
                        continue;
                    }
                    cus.setDistrictName(regionDistrict.getRegionName());
                }
                //获取县的信息
                String tradId = cus.getTradId();
                if (StringUtils.isNotBlank(tradId)) {
                    Region regionTrading = regionService.getRegionById(tradId);
                    if((Constant.REGION_SOURCE_JD).equalsIgnoreCase(cus.getSource())){
                        regionTrading = regionService.getRegionBySourceregid(cus.getTradId(), Constant.REGION_SOURCE_JD);
                    }else if((Constant.REGION_SOURCE_STB).equalsIgnoreCase(cus.getSource())){
                        regionTrading = regionService.getRegionBySourceregid(cus.getTradId(), Constant.REGION_SOURCE_STB);
                    }else{
                        regionTrading = regionService.getRegionById(cus.getTradId());
                    }
                    if(null == regionTrading){
                        continue;
                    }
                    cus.setTradingName(regionTrading.getRegionName());
                }

            }
        }
        //获取商家信息
        view.addObject("cuslist", cusAddrList);

    } catch (BusinessException be) {

        logger.error("查看地址失败", be);
        this.forwordErrorPage(model, be.getMessage());
    } catch (Exception ex) {

        logger.error("查看地址失败", ex);
        this.forwordErrorPage(model, ExceptionMsg.getSystemErrorMsg());
    }

    return view;
}

领导说for循环中尽量不要请求数据库,应该怎么改一下

解决方案

说一下自己的看法:
1.控制层还是尽量不要写逻辑,应该一到Service层去;
2.你这个for循环里面的查询数据库是每次只查一条,查询多次,那为什么不用一条查询语句全部查出来呢。
3.还有就是可以用冗余字段的方法来尽量减少查询数据库的次数,比如你可以把那些个地址中经常需要查询的,直接加到user对应的表里面去,缺点是需要更改表结构,还需要用到mq。。。

时间: 2024-08-06 19:45:49

请教一下,代码优化问题,急在线等的相关文章

jsp-百度编辑器1.4.3JSP版 如何修改文件上传路径?急在线等

问题描述 百度编辑器1.4.3JSP版 如何修改文件上传路径?急在线等 RT 默认的上传路径在重启Tomcat的时候会造成图片丢失的情况,请问该如何修改百度编辑器的文件上传路径 急........................在线等 解决方案 在ueditor/jsp/config.json中的 "imagePathFormat": "/ueditor/jsp/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存

请问这个C++的dll在C#中怎么调呀?急……在线等!

问题描述 请问这个C++的dll在C#中怎么调呀?急--在线等! C++中的调用: extern "C" _declspec(dllimport) int ReadGzjzzData(char* pData,char* photo,int * iErrCode); void CReadGzjzzDlg::OnBnClickedOk() { // TODO: 在此添加控件通知处理程序代码 // OnOK(); char Data[64*1024] = {0};//各字段用双竖"

jquery-jQuery自动排版,急在线等

问题描述 jQuery自动排版,急在线等 一横排8张图片,我隐藏右边jQuery如何让其余图片自动向右靠 解决方案 右浮动布局就好了, <style> .floatright img{float:right;margin-left:5px} </style> <div class="floatright"> <img alt="image1"/> <img alt="image2"/>

mfc文本框edit ctrl光标焦点问题-急在线等-谢谢

问题描述 mfc文本框edit ctrl光标焦点问题-急在线等-谢谢 有2个文本框A,B 文本框A:作为log输出信息窗口,假设不停地输出log信息,我使用setsel.setfocus.replacesel的方法做的末尾追加:文本框B:一个输入的文本框,在文本框A不停输出的前提下,光标焦点老是跑到文本框A的末尾: 问题:文本框B怎么才能在 文本框A不停输出的前提下 获取光标焦点,焦点不跑到A? 谢谢,描述的应该很清楚了,如果不清楚,请追问,再次谢谢. 解决方案 追加文本用不着设置焦点.Send

java-JAVA ATM类 很急 在线等

问题描述 JAVA ATM类 很急 在线等 初学者急求教,题目如下,谢谢大家了 应用Java面向对象概念编写一个银行ATM系统Java应用,要求实现下列功能: 1.查询余额 2.存款 2.取款: 3.转账 应用技术要求: 1.要应用到Java面向对象技术(封装,基础和多态,也可有接口等技术) 2.要求有图形界面作为界面,后台应用非图形界面 3.可应用其他Java技术 解决方案 http://www.atguigu.com/download.shtml 这个链接你点击进去,这里面的免费视频中有个b

字段-有关oracle11g的问题,急在线等

问题描述 有关oracle11g的问题,急在线等 a5107 这个字段数据类型为varchar2 长度为 1 现在有几笔数据显示是没有值的.我用条件 a5107=' ' 或者 a5107=null 或者 a5107 <> '0' 这几个条件都查不到这几笔数据 .不知有没有大神知道原因 解决方案 你用 is null,is not null,试试 解决方案二: a5107 IS NULL

visual studio-VS2013 c++ 编写与导入dll文件 详细求教 急在线等

问题描述 VS2013 c++ 编写与导入dll文件 详细求教 急在线等 首先想明确动态链接库与静态链接库的区别,以及是否可以通过dll与lib文件判断该接口是动态链接库还是静态链接库.如何判断. 其次,想求教如何用VS2013,在完全空白项目下编写dll文件一步步编写一个最简单的类. 最后,如何导入一个已经编好的dll文件 QQ398612945(答好另有酬谢) 解决方案 加我QQ 893277858 给你整个工程的代码... 解决方案二: 动态库和静态库都需要.h .lib文件,动态库还需要

设计-小白求助 C++编程 急 在线等

问题描述 小白求助 C++编程 急 在线等 1.定义一个职工类CWorker,数据成员包括姓名.职工号.工龄.工资:成员函数有构造函数,设置数据成员值的函数,读取数据成员值的函数.在主函数中定义对象数组,再编写一个CWorker类的友元函数,计算平均工资,查找最高工资. 2.设计一个职工类CWorker,成员包括姓名.职工号.工龄.工资及相关的成员函数.由它派生出教师类CTeacher,包括职称,所属部门等属性和相关的成员函数.编写一个主函数,对设计的类进行测试.

oracle-新手请教一个sql查询问题,在线等,谢谢

问题描述 新手请教一个sql查询问题,在线等,谢谢 一张激活表TL_CSU_ACTIVATE_LOG: 一张用户表TV_CSU_USER 现在要查询2014-12to2015-12每月注册的不同类型(T,B,M,D)用户数,如下图: sql 应该怎么写 解决方案 参考Oracle行列转换 因为你的类型是固定的,所以直接查询,如果你的类型不固定,可以参考上面的链接. SELECT TT.Month ,SUM(CASE WHEN TT.TYPE = 'B' THEN Count ELSE 0 END