Springboot初级:使用HashMap无实体类返回自定义字段给前端

需求:不增加新的实体类前提下,像数据查询并返回多组现实体类不包含的字段值给前端。

 实例如下:

{
    "code": "success",
    "msg": "成功",
    "data": [
        {
            "pk": 11,
            "pcode": "15698",
            "name": "Q32",
            "picnm": 2,
            "equcode": "332"
        },
        {
            "pk": 11,
            "pcode": "15605",
            "name": "Q32",
            "picnm": 3,
            "equcode": "322"
        },
        {
            "pk": 101,
            "pcode": "01019315724",
            "name": "WHWQ32",
            "picnm": 1,
            "equcode": "352"
        }
    ]
}

 而HashMap恰好可以很好的应对这种使用场景,多组可以用List<HashMap>接收,而返回给前端的恰好是上图格式。

贴一点实现代码:

Mapper.xml

<select id="queryEquTuhaoByPk" parameterType="java.lang.Integer" resultType="java.util.HashMap">
    select 
          
           b.pcode,
           b.name,
           c.picnm,
           a.pk
    from `equ` a
             left join
         `pro_equ` c on c.pk = a.pk2
             left join
         `product` b on b.pkproduct = c.pkproduct

    where c.pk = #{pk,jdbcType=INTEGER}
</select>

 Mapper.java

         List<HashMap<String,Object>> queryEquTuhaoByPk(Integer pk);

IService.java

 List<HashMap<String,Object>> getEquTuhaoByPk(Integer pk)throws Exception;

 ServiceImpl.java

  @Override
    public List<HashMap<String, Object>> getEquTuhaoByPk(Integer pk) {

        List<HashMap<String, Object>> EquTh = new ArrayList<>();
        try {
            EquTh = mMapper.queryEquTuhaoByPk(pk);
            return EquTh ;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return EquTh ;
    }

 Controller.java

 @PostMapping(value = "queryEquPicByPk")
    @ResponseBody
    public ReturnT queryEquPicByPk(Integer pk) throws Exception {
        try {
            List<HashMap<String,Object>> result =  iService.getEquTuhaoByPk(pk);
            return ReturnT.creat(result,ComResponse.SUCCESS, "查询成功!");
        } catch (Exception e){
            return ReturnT.creat(e.getCause() + "失败", e.getMessage());
        }
    }

返回泛型 

public class ReturnT<T> {

    public static final String SUCCESS = "success";
    public static final String FAILURE = "fail";
    public static final String ERROR = "error";

    //表明对应请求返回的处理结果“success”“fail”
    private String code;
    private  String msg;
    //若status=sucessc,则data内返回前端需要的json
    //若status=fail,则data返回错误码格式
    private  T data;

    /**
     * 定义一个通用的创建方法,当方法执行成功,则返回sucess
     * @param object
     * @return
     */
    public static ReturnT sucess(Object object){
        return ReturnT.creat(object,SUCCESS,"操作成功");
    }
    /**
     * 定义一个通用的创建方法,当方法执行成功,则返回sucess
     * @return
     */
    public static ReturnT sucess(){
        return ReturnT.creat(null,SUCCESS,"操作成功");
    }

    /**
     * 定义一个通用的创建方法,当方法执行成功,则返回sucess
     * @param object
     * @return
     */
    public static ReturnT error(Object object) {
        return ReturnT.creat(object, ERROR, "操作失败" + object);
    }
    /**
     * 定义一个通用的创建方法,当方法执行成功,则返回sucess
     * @return
     */
    public static ReturnT error(){
        return ReturnT.creat(null,ERROR,"操作失败");
    }

    public static ReturnT creat( String code,String msg) {
        ReturnT type = new ReturnT();
        type.setCode(code);
        type.setMsg(msg);
        return type;
    }

    public static ReturnT creat(Object data,String code, String msg ) {
        ReturnT comResponse = new ReturnT();
        ReturnT.setCode(code);
        ReturnT.setMsg(msg);
        ReturnT.setData(data);
        return  comResponse;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public T getData() {
        return data;
    }

    public void setData(T data) {
        this.data = data;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }
}

前端:

<el-popover placement="right" trigger="hover" @show="searchproduct(itemdtl)" v-if="itemdtl.pk">
                  <div>
                    <el-table :data="product">
                      <el-table-column width="100" label="编码" prop="pk"></el-table-column>
                      <el-table-column width="100" label="名称" prop="name"></el-table-column>
                      <el-table-column width="100" label="图号" prop="picnm"></el-table-column>
                 
                      <el-table-column width="100" label="型号" prop="code"></el-table-column>
                    </el-table>
                  </div>
                  <el-button slot="reference" type="danger" size="mini">对应数据</el-button>
                </el-popover>
 searchproduct(itemdtl) {
        this.$axios({
          method: 'post',
          url: 'queryEquPicByPk',
          params: {
            pkequ: itemdtl.pk
          }
        }).then(res => {
          this.product = res.data.data
        })
      },

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值