• 自动化测试三(castlist)


    controller层 

    import com.choosefine.automatedtest.cases.caselist.dto.CaseDto;      //dto 
    import com.choosefine.automatedtest.cases.caselist.service.CaseListService;  
    import com.choosefine.automatedtest.common.controller.BaseController;
    import io.swagger.annotations.ApiImplicitParam;
    import io.swagger.annotations.ApiImplicitParams;
    import io.swagger.annotations.ApiOperation;
    import org.apache.ibatis.annotations.Delete;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.*;
    
    /**
     * Created by Administrator on 2017/7/14.
     */
    
    @RestController
    @RequestMapping("/automated/caseList")
    public class CaseListController extends BaseController{
        @Autowired
        CaseListService caseListService;
    
        @ApiOperation(value = "获取case列表")   
        @ApiImplicitParams({
                @ApiImplicitParam(paramType = "query", name = "caseNumber", dataType = "String", required = false, value = "case编号",defaultValue = ""),
                @ApiImplicitParam(paramType = "query", name = "caseName", dataType = "String", required = false, value = "case名称",defaultValue = ""),
                @ApiImplicitParam(paramType = "query", name = "operator", dataType = "String", required = false, value = "操作员",defaultValue = ""),
                @ApiImplicitParam(paramType = "query", name = "pageSize", dataType = "int", required = true, value = "分页大小,默认10", defaultValue = "10"),
                @ApiImplicitParam(paramType = "query", name = "pageNum", dataType = "int", required = true, value = "页码,默认1", defaultValue = "1"),
        })
        @GetMapping   //查询 后面有分页插件
        public String getCaseList(String caseNumber,String caseName,Integer caseType,String operator,Integer pageSize,Integer pageNum){
            return responseSuccess(caseListService.getCase(caseNumber,caseName,caseType,operator,pageSize,pageNum));
        }
    
        @ApiOperation(value = "新增case")
        @PostMapping
        public String addCase(@RequestBody CaseDto caseDto){        //新增的是dto 一般model层数据不多的就没必要写dto dto是数据传输封装了部分需要传输的model层数据 
            return responseSuccess(caseListService.addCase(caseDto));
        }
    
        @ApiOperation(value = "删除case")
        @ApiImplicitParams({      
                @ApiImplicitParam(paramType = "query", name = "caseId", dataType = "int", required = true, value = "case的自增id")
        })
        @DeleteMapping  // 删除
        public String deleteCase(Integer caseId){
            return responseSuccess(caseListService.deleteCase(caseId));
        }
    
        @ApiOperation(value = "获取caseStep")
        @ApiImplicitParams({
                @ApiImplicitParam(paramType = "query", name = "caseId", dataType = "int", required = true, value = "case的自增id")
        })
        @GetMapping("/caseStep")    //查询步骤 
        public String getCaseStep(Integer caseId){
            return responseSuccess(caseListService.getCaseStep(caseId));
        }
    
        @ApiOperation(value = "更新case")
        @PutMapping        // 更新就是修改里面的参数 有body 
        public String updateCase(@RequestBody CaseDto caseDto){
            return responseSuccess(caseListService.updateCase(caseDto));
        }
    }

     DTO   : 
    Data   Transfer   Object数据传输对象 
    主要用于远程调用等需要大量传输对象的地方。 
    比如我们一张表有100个字段,那么对应的PO就有100个属性。 
    但是我们界面上只要显示10个字段, 
    客户端用WEB   service来获取数据,没有必要把整个PO对象传递到客户端, 
    这时我们就可以用只有这10个属性的DTO来传递结果到客户端,这样也不会暴露服务端表结构.到达客户端以后,如果用这个对象来对应界面显示,那此时它的身份就转为VO 

     po 数据库对应的字段   dto需要传输的字段   vo 需要显示的字段   

    DAO是data access object 数据库访问对象  可以把pojo转化为po persist object 持久化对象 po 可以封装成 vo需要显示的数据  dto需要传输的数据  

    service 层

    import com.choosefine.automatedtest.cases.caselist.dao.CaseListMapper;   
    import com.choosefine.automatedtest.cases.caselist.dao.CaseStepMapper;
    import com.choosefine.automatedtest.cases.caselist.dto.CaseDto;
    import com.choosefine.automatedtest.cases.caselist.model.Case;
    import com.choosefine.automatedtest.cases.caselist.model.CaseStep;
    import com.choosefine.automatedtest.cases.caselist.vo.CaseListPage;
    import com.choosefine.automatedtest.cases.caselist.vo.CaseVo;
    import com.choosefine.automatedtest.cases.expect.model.Expect;
    import com.choosefine.automatedtest.cases.predata.model.PreData;
    import com.github.pagehelper.PageHelper;
    import com.github.pagehelper.PageInfo;
    import org.springframework.beans.factory.annotation.Autowired; //Autowired 
    import org.springframework.stereotype.Service;  //@service 
    import org.springframework.transaction.annotation.Transactional;
    
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.HashSet;
    import java.util.List;
    
    
    /**
     * Created by Administrator on 2017/7/14.
     */
    
    @Service
    public class CaseListService {
        @Autowired       
        CaseListMapper caseListMapper;  //dao
        @Autowired
        CaseStepMapper caseStepMapper;  //dao
    
        public CaseListPage getCase(String caseNumber, String caseName, Integer caseType,String operator, Integer pageSize, Integer pageNum){  //6个参数
            PageHelper.startPage(pageNum,pageSize);
            List<Case> list = caseListMapper.getCase(caseNumber,caseName,caseType,operator);
            //todo 根据typeId查到对应的case_type_name,把所有的caseList重新放到caseVo里
            List<CaseVo> caseVos = new ArrayList<CaseVo>();
            for(int i = 0;i < list.size();i ++){
                CaseVo caseVo = new CaseVo();
                caseVo.setCaseId(list.get(i).getCaseId());
                caseVo.setCaseName(list.get(i).getCaseName());
                caseVo.setCaseNumber(list.get(i).getCaseNumber());
                caseVo.setCaseType(list.get(i).getCaseType());
                caseVo.setCreateTime(list.get(i).getCreateTime());
                caseVo.setOperator(list.get(i).getOperator());
                caseVo.setIsValid(list.get(i).getIsValid());
                caseVo.setCaseTypeName(caseListMapper.getTypeName(list.get(i).getCaseType()));
                caseVos.add(i,caseVo);
            }
            PageInfo pageInfo = new PageInfo<>(list);
            CaseListPage caseListPage = new CaseListPage();
            caseListPage.setList(caseVos);
            caseListPage.setPageSize(pageInfo.getPageSize());
            caseListPage.setPageNum(pageInfo.getPageNum());
            caseListPage.setTotalRows(pageInfo.getTotal());
            caseListPage.setTotalPage(pageInfo.getPages());
            return caseListPage;
        }
    
        @Transactional   //事物  要么做要么都不做
        public int addCase(CaseDto caseDto){  
            //todo 判断是否有重复 byname,若有返回 0
            List<CaseStep> caseSteps = caseDto.getStep();
            List<String> steps = new ArrayList<>();
            for(int i = 0;i < caseSteps.size();i ++){
                steps.add(i,caseSteps.get(i).getByname());
            }
            boolean isRepeat = steps.size() != new HashSet<String>(steps).size();
            if(isRepeat){
                return 0;
            }
            Case aCase = new Case();
            aCase.setCaseName(caseDto.getCaseName());
            aCase.setCaseNumber(caseDto.getCaseNumber());
            aCase.setCaseType(caseDto.getCaseType());
            aCase.setCreateTime(new Date());
    
            int insertCaseNum = caseListMapper.insertSelective(aCase);
            int caseId = caseListMapper.selectId(caseDto.getCaseNumber());
    
            CaseStep caseStep = null;
            for(int i = 0;i < caseDto.getStep().size();i ++){
                caseStep = new CaseStep();
                caseStep.setStep(caseDto.getStep().get(i).getStep());
                caseStep.setByname(caseDto.getStep().get(i).getByname());
                caseStep.setExpectResult(caseDto.getStep().get(i).getExpectResult());
                caseStep.setCaseId(caseId);
                caseStepMapper.insertSelective(caseStep);
            }
            return insertCaseNum;
        }
    
        public int deleteCase(Integer caseId){
            List<CaseStep> list = caseStepMapper.findCaseStep(caseId);
            if(list.size() == 0){
                return caseStepMapper.updateSingleCase(caseId);
            }else{
                return caseStepMapper.updateCase(caseId);
            }
        }
    
        public List<CaseStep> getCaseStep(Integer caseId){
            return caseStepMapper.findCaseStep(caseId);
        }
    
        @Transactional    // 事物要么做要么都不做
        public int updateCase(CaseDto caseDto){  // dto是传输数据的一个类
            //todo 判断是否有重复 byname,若有返回 0
            List<CaseStep> caseSteps = caseDto.getStep();
            List<String> steps = new ArrayList<>();
            for(int i = 0;i < caseSteps.size();i ++){
                steps.add(i,caseSteps.get(i).getByname());
            }
            boolean isRepeat = steps.size() != new HashSet<String>(steps).size();
            if(isRepeat){
                return 0;
            }
    
            Case aCase = new Case();
            aCase.setCaseId(caseDto.getCaseId());
            aCase.setCaseNumber(caseDto.getCaseNumber());
            aCase.setCaseName(caseDto.getCaseName());
            aCase.setCaseType(caseDto.getCaseType());
            int updateNum = caseListMapper.updateByPrimaryKeySelective(aCase);
            //todo 更新 case_list 再更新 pre_data 中关联的 caseName 和 caseNumber
            List<PreData> preData = caseListMapper.findPreData(aCase.getCaseId());
            if(preData.size() != 0){
                int updatePreDataCase = caseListMapper.updatePreDataCase(aCase.getCaseName(),aCase.getCaseNumber(),aCase.getCaseId());
            }
            List<Expect> expects = caseListMapper.findExpect(aCase.getCaseId());
            if(expects.size() != 0){
                int updateExpectCase = caseListMapper.updateExpectCase(aCase.getCaseName(),aCase.getCaseNumber(),aCase.getCaseId());
            }
    
            CaseStep caseStep = null;
            for(int i = 0;i < caseDto.getStep().size();i ++){
                caseStep = new CaseStep();
                caseStep.setCaseId(aCase.getCaseId());
                caseStep.setId(caseDto.getStep().get(i).getId());
                caseStep.setStep(caseDto.getStep().get(i).getStep());
                caseStep.setByname(caseDto.getStep().get(i).getByname());
                caseStep.setExpectResult(caseDto.getStep().get(i).getExpectResult());
                caseStep.setIsValid(caseDto.getStep().get(i).getIsValid());
                if(caseStep.getId() == null){
                    int insertStepNum = caseStepMapper.insertSelective(caseStep);
                }else{
                    int updateStepNum = caseStepMapper.updateByPrimaryKeySelective(caseStep);
                }
            }
            return updateNum;
        }
    }

     model层case类  对应的数据库字段 对应case_list表

    import javax.persistence.Id;
    import javax.persistence.Table;
    import java.util.Date;
    
    /**
     * Created by Administrator on 2017/7/14.
     */
    
    @Table(name = "case_list")
    public class Case {
        @Id
        private Integer caseId;
        private String caseNumber;
        private String caseName;
        private Integer caseType;
        private String operator;
        private Date createTime;
        private Integer isValid;
    
        public Integer getIsValid() {
            return isValid;
        }
    
        public void setIsValid(Integer isValid) {
            this.isValid = isValid;
        }
    
        public String getCaseNumber() {
            return caseNumber;
        }
    
        public void setCaseNumber(String caseNumber) {
            this.caseNumber = caseNumber;
        }
    
        public String getCaseName() {
            return caseName;
        }
    
        public void setCaseName(String caseName) {
            this.caseName = caseName;
        }
    
        public Integer getCaseType() {
            return caseType;
        }
    
        public void setCaseType(Integer caseType) {
            this.caseType = caseType;
        }
    
        public String getOperator() {
            return operator;
        }
    
        public void setOperator(String operator) {
            this.operator = operator;
        }
    
        public Date getCreateTime() {
            return createTime;
        }
    
        public void setCreateTime(Date createTime) {
            this.createTime = createTime;
        }
    
        public Integer getCaseId() {
            return caseId;
        }
    
        public void setCaseId(Integer caseId) {
            this.caseId = caseId;
        }
    }

    dao 层

    import com.choosefine.automatedtest.cases.caselist.dynamicsql.DynamicSql;
    import com.choosefine.automatedtest.cases.caselist.model.Case;
    import com.choosefine.automatedtest.cases.expect.model.Expect;
    import com.choosefine.automatedtest.cases.predata.model.PreData;
    import com.choosefine.automatedtest.common.dao.BaseMapper;
    import org.apache.ibatis.annotations.*;
    
    import java.util.List;
    
    
    /**
     * Created by Administrator on 2017/7/14.
     */
    
    @Mapper
    public interface CaseListMapper extends BaseMapper<Case> {
        @SelectProvider(          //动态sql 
                type = DynamicSql.class,
                method = "dynamicSql"
        )
        public List<Case> getCase(   //获取getCase是个list<case>放的一个类
                @Param("caseNumber") String caseNumber, @Param("caseName") String caseName, @Param("caseType") Integer caseType,@Param("operator") String operator);
    
        @Select("select case_id from case_list where case_number = #{caseNumber} and is_valid = 1")
        int selectId(@Param("caseNumber") String caseNumber);
    
        @Select("select * from pre_data where case_id = #{caseId} and is_valid = 1")
        List<PreData> findPreData(@Param("caseId") Integer caseId);
    
        @Update("update pre_data set case_name = #{caseName},case_number = #{caseNumber} where case_id = #{caseId}")
        int updatePreDataCase(@Param("caseName") String caseName, @Param("caseNumber") String caseNumber, @Param("caseId") Integer caseId);
    
        @Select("select * from expect where case_id = #{caseId} and is_valid = 1")
        List<Expect> findExpect(@Param("caseId") Integer caseId);
    
        @Update("update expect set case_name = #{caseName},case_number = #{caseNumber} where case_id = #{caseId}")
        int updateExpectCase(@Param("caseName") String caseName, @Param("caseNumber") String caseNumber, @Param("caseId") Integer caseId);
    
        @Select("select case_type_name from case_type where id = #{id} and is_valid = 1")
        String getTypeName(@Param("id") Integer id);
    }

    动态sql 

    import org.apache.ibatis.annotations.Param;
    import org.apache.ibatis.jdbc.SQL;
    
    
    /**
     * Created by Administrator on 2017/7/17.
     */
    public class DynamicSql{
        public String dynamicSql(@Param("caseNumber") String caseNumber, @Param("caseName") String caseName,@Param("caseType") Integer caseType, @Param("operator")  String operator){
            SQL sql = new SQL();
            sql.SELECT("*");
            sql.FROM("case_list");
            if(caseNumber != null && !caseNumber.equals("")){
                sql.WHERE("case_number LIKE CONCAT(CONCAT('%', #{caseNumber}), '%')");
            }
            if(caseName != null && !caseName.equals("")){
                sql.WHERE("case_name LIKE CONCAT(CONCAT('%', #{caseName}), '%')");
            }
            if(caseType != null && !caseType.equals("")){
                sql.WHERE("case_type = #{caseType}");
            }
            if(operator != null && !operator.equals("")){
                sql.WHERE("operator LIKE CONCAT(CONCAT('%', #{operator}), '%')");
            }
            sql.WHERE("is_valid = 1");
            sql.ORDER_BY("create_time desc");
    
            return sql.toString();
        }
    }

    ..

  • 相关阅读:
    mybatis Column 'XXX' in where clause is ambiguous 错误
    IDEA 代码提示不区分大小写
    接口安全问题
    spring 事务问题
    js问题: is not a function
    Uncaught TypeError: form.attr is not a function 解决办法
    springmvc 跳转页面或者返回json
    ajax 跳转页面时添加header
    maven工程 添加本地jar依赖
    mysql 创建备份表
  • 原文地址:https://www.cnblogs.com/hudj/p/7365451.html
Copyright © 2020-2023  润新知