zoukankan      html  css  js  c++  java
  • Mybatis批量插入数据

    1.xml文件

    <insert id="addMrqDataBatch" >
            insert into c_b_mrq_info
            (
            proj_id,templ_rela_id,actual_value,design_value,is_qualified,
            rsr_id,index_num,templ_rela_det_id,create_time,
            create_user,img_name,index_group,proj_section_id,
            part_id,flag,household_no,wdd_id
            )
            values
            <foreach collection ="bMrqInfo2s" item="bMrqInfo2" index= "index" separator =",">
                (
                #{bMrqInfo2.projectID},
                #{bMrqInfo2.relationID},
                #{bMrqInfo2.measureValues},
                #{bMrqInfo2.designValues},
                #{bMrqInfo2.measureResult},
                #{bMrqInfo2.measurePlace},
                #{bMrqInfo2.measureIndex},
                #{bMrqInfo2.standardRelationID},
                now(),
                #{bMrqInfo2.takenBy},
                #{bMrqInfo2.measurePhoto},
                #{bMrqInfo2.indexGroup},
                #{bMrqInfo2.projSectionId},
                #{bMrqInfo2.partId},
                #{bMrqInfo2.flag},
                #{bMrqInfo2.householdNo},
                #{bMrqInfo2.dotId}
                )
            </foreach >
    
        </insert>

    2.dao层

    Integer addMrqDataBatch(@Param("bMrqInfo2s") List<BMrqInfo2> bMrqInfo2s);

    3.实体类

    public class BMrqInfo2 {
    
        private String projectID;
    
        private String relationID;
    
        private String measureValues;
    
        private String designValues;
    
        private String measureResult;
    
        private String measurePlace;
    
        private Integer measureIndex;
    
        private Integer standardRelationID;
    
        //private String createTime;
    
        private String takenBy;
    
        private String measurePhoto;
    
        private int indexGroup;
    
        private Integer projSectionId;
    
        private Integer partId;
    
        private    String flag;
    
        private String householdNo;
    
        private String dotId;
    
        public String getProjectID() {
            return projectID;
        }
    
        public void setProjectID(String projectID) {
            this.projectID = projectID;
        }
    
        public String getRelationID() {
            return relationID;
        }
    
        public void setRelationID(String relationID) {
            this.relationID = relationID;
        }
    
        public String getMeasureValues() {
            return measureValues;
        }
    
        public void setMeasureValues(String measureValues) {
            this.measureValues = measureValues;
        }
    
        public String getDesignValues() {
            return designValues;
        }
    
        public void setDesignValues(String designValues) {
            this.designValues = designValues;
        }
    
        public String getMeasureResult() {
            return measureResult;
        }
    
        public void setMeasureResult(String measureResult) {
            this.measureResult = measureResult;
        }
    
        public String getMeasurePlace() {
            return measurePlace;
        }
    
        public void setMeasurePlace(String measurePlace) {
            this.measurePlace = measurePlace;
        }
    
        public Integer getMeasureIndex() {
            return measureIndex;
        }
    
        public void setMeasureIndex(Integer measureIndex) {
            this.measureIndex = measureIndex;
        }
    
        public Integer getStandardRelationID() {
            return standardRelationID;
        }
    
        public void setStandardRelationID(Integer standardRelationID) {
            this.standardRelationID = standardRelationID;
        }
    
        public String getTakenBy() {
            return takenBy;
        }
    
        public void setTakenBy(String takenBy) {
            this.takenBy = takenBy;
        }
    
        public String getMeasurePhoto() {
            return measurePhoto;
        }
    
        public void setMeasurePhoto(String measurePhoto) {
            this.measurePhoto = measurePhoto;
        }
    
        public int getIndexGroup() {
            return indexGroup;
        }
    
        public void setIndexGroup(int indexGroup) {
            this.indexGroup = indexGroup;
        }
    
        public Integer getProjSectionId() {
            return projSectionId;
        }
    
        public void setProjSectionId(Integer projSectionId) {
            this.projSectionId = projSectionId;
        }
    
        public Integer getPartId() {
            return partId;
        }
    
        public void setPartId(Integer partId) {
            this.partId = partId;
        }
    
        public String getFlag() {
            return flag;
        }
    
        public void setFlag(String flag) {
            this.flag = flag;
        }
    
        public String getHouseholdNo() {
            return householdNo;
        }
    
        public void setHouseholdNo(String householdNo) {
            this.householdNo = householdNo;
        }
    
        public String getDotId() {
            return dotId;
        }
    
        public void setDotId(String dotId) {
            this.dotId = dotId;
        }
    }

    4.service层

    public Integer addMrqDataBatch(List<BMrqInfo2> bMrqInfo2s){
            return bMrqAssessMapper.addMrqDataBatch(bMrqInfo2s);
        }
    public Integer addMrqDataBatch(List<BMrqInfo2> bMrqInfo2s){
            return bMrqAssessMapper.addMrqDataBatch(bMrqInfo2s);
        }
    
        @Transactional
        public void  addMeasuredvalue(Map<String, Map<String,BMrqInfo2 >> map,String projId,String sectionId,String flag,String partId){
            //先遍历所有二级分类下的实测数据,即遍历groupId级别
            for (Map.Entry<String, Map<String,BMrqInfo2 >> entry1 : map.entrySet()) {
                //此处的map2就是item级别的实测数据
                Map<String, BMrqInfo2> map2 = entry1.getValue();
                //将item级别的实测数据只取value值,并生成一个准备插入实测表的list
                List<BMrqInfo2> result2 = new ArrayList<>(map2.values());
                //取一个具体的数据,获取projId,sectionId,flag和partId的值,用于后面调用存储过程来计算合格率
                BMrqInfo2 bMrqInfo2 = result2.get(0);
                projId=bMrqInfo2.getProjectID();
                sectionId=bMrqInfo2.getProjSectionId().toString();
                flag=bMrqInfo2.getFlag();
                partId=bMrqInfo2.getPartId().toString();
                //将上面生成的实测数据的所有templ_rela_id生成一个字符串集合,用于作为删除下面实测数据的条件
                List<String> acceptTypeList = result2.stream().map(BMrqInfo2 :: getRelationID).collect(Collectors.toList());
                //根据projId和上面的字符串集合 ,先把该项目下templ_rela_id的值在上面结果集的数测数据 删除
                bMrqAssessMapper.deleteMrqDataByAcceptType(projId,acceptTypeList,partId);
                //然后进行批量添加操作
                bMrqAssessMapper.addMrqDataBatch(result2);
            }
    
            Map<String, Object> mapCount = new HashMap<>();
            mapCount.put("projId", projId);
            mapCount.put("projSectionId", Integer.parseInt(sectionId));
            mapCount.put("flag", flag);
            mapCount.put("partId", Integer.parseInt(partId));
            try {
                //调用存储过程来计算合格率
                bMrqAssessMapper.countBMrqInfo2(mapCount);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

    5.controller层

        @RequestMapping(value = "/addMeasuredvalue", method = RequestMethod.POST, produces = "application/json;charset=UTF-8")
        @ResponseBody
        public synchronized Info addMeasuredvalue(@RequestBody Map<String, Map<String,BMrqInfo2 >> map, HttpServletRequest request) {
            //接口埋点
            InvokeInterface.addInvokeInterfaceData(request,ConstantList.actualMeasurement_code);
            logger.info("/shiceAction/addMeasuredvalue");
            String projId = null;
            String sectionId = null;
            String flag = null;
            String partId = null;
            Info infos = new Info();
            //指定数据库
            DBContextHolder.setDbType("dataSource2");
            bMrqAssessService.addMeasuredvalue(map,projId,sectionId,flag,partId);
            infos.setCode("1");
            infos.setMsg("数据上传成功");
            DBContextHolder.clearDbType();
            return infos;
        }
  • 相关阅读:
    更新我电脑的编译器之Java语言
    HTML/CSS基础
    查找元素的杀手锏xpath
    错误日志的实时抓取保证代码质量
    Splinter常用api
    从底层向上理解Git
    infer运用实践
    流程图在测试用例编写中的运用
    2016小结
    Splinter 查找元素
  • 原文地址:https://www.cnblogs.com/lusaisai/p/13606251.html
Copyright © 2011-2022 走看看