小工具知识网

当前位置: 首页 > 行业知识 > Java 多输入框查询需求实现

行业知识

Java 多输入框查询需求实现

2026-10-22 04:18:09 来源:互联网转载

wei_shuo���个人主页

wei_shuo的学习社区

Hello World !


多输入框查询

需求分析

任意一个输入框,输入内容点击搜索都可以精准搜索到对应的内容

代码实现

Controller接口编写

 @PostMapping("merchant/manage") public Result merchantDisputeManage(@RequestBody DisputeMerchantManageRequest request) {     return Result.succ(merchantDisputeFacade.merchantDisputeManage(request)); }
  • Result:返回给前端的字段:VO
  • @RequestBody DisputeMerchantManageRequest request:接收前端传递的JSON数据:BO
  • merchantDisputeFacade.merchantDisputeManage(request):调用Service的merchantDisputeManage方法,传递接受的参数request

    Service编写

    MerchantDisputeFacade.java

    public PageResult merchantDisputeManage(DisputeMerchantManageRequest request) {       DisputeMerchantManageBO manageBO = DisputeMerchantManageBO.convert(request);               List list = merchantDisputeService.merchantDisputeManage(manageBO);           PageResult pageResult = PageResult.                   builder().pageNo(Integer.parseInt(request.getPageNo()))                .pageSize(Integer.parseInt(request.getPageSize()))                .total(merchantDisputeService.merchantDisputeManageCount(manageBO)).items(list).build();                return pageResult;    }
    • DisputeMerchantManageBO manageBO = DisputeMerchantManageBO.convert(request):将DisputeMerchantManageRequest对象 request 转换为 DisputeMerchantManageBO对象 manageBO
    • List list = merchantDisputeService.merchantDisputeManage(manageBO):调用merchantDisputeService中的merchantDisputeManage方法,传递manageBO作为参数,然后获取一个List类型的结果列表
       PageResult pageResult = PageResult.                   builder()     .pageNo(Integer.parseInt(request.getPageNo()))                .pageSize(Integer.parseInt(request.getPageSize()))                .total(merchantDisputeService.merchantDisputeManageCount(manageBO))     .items(list).build();
      • PageResult:泛型类封装分页查询结果,包含页面信息、页码、每页条目数、总记录数以及当前页面的数据项列表
      • PageResult.builder():创建了用于构建PageResult对象的构造器;后续代码可以通过该构造器设置分页信息、总记录数和当前页面的数据项列表,最终得到一个完整的PageResult对象
      • .pageNo(Integer.parseInt(request.getPageNo())):设置PageResult对象的当前页码
      • .pageSize(Integer.parseInt(request.getPageSize())):设置PageResult对象的每页条目数
      • .total(merchantDisputeService.merchantDisputeManageCount(manageBO)):设置PageResult对象的总记录数
      • .items(list).build():设置PageResult对象的数据项列表,并完成构建PageResult对象
      • .items(list):获取的数据项列表list设置为PageResult对象的数据项列表属性
      • .build():完成PageResult对象的构建,最终得到一个完整的PageResult对象

        Service编写

        MerchantDisputeService.java

            public List merchantDisputeManage(DisputeMerchantManageBO disputeMerchantManageBO) {        Merchant merchant = AuthContextHolder.getLoginMerchant();        disputeMerchantManageBO.setMerchantNo(merchant.getMerchantNo());        return merchantDisputeMapper.merchantDisputeManage(disputeMerchantManageBO);    }
        • Merchant merchant = AuthContextHolder.getLoginMerchant():通过AuthContextHolder获取当前登录的商家(Merchant)对象;AuthContextHolder:用于在当前线程的上下文中存储和管理认证信息
        • disputeMerchantManageBO.setMerchantNo(merchant.getMerchantNo()):获取merchant中的MerchantNo(商户号),并存储在disputeMerchantManageBO中
        • merchantDisputeMapper.merchantDisputeManage(disputeMerchantManageBO):调用Mapper层merchantDisputeManage方法将disputeMerchantManageBO作为参数传递给Mapper

          Mapper

              List merchantDisputeManage(DisputeMerchantManageBO disputeMerchantManageBO);

          Mapper.xml

          • 通过联表查询,查询merchant_dispute和transaction_order表对应字段,通过对disputeMerchantManageBO字段传入的条件动态生成查询语句,并按照创建时间进行降序排序,最后返回指定分页范围内的结果
                        select md.id disputeId,md.status disputeStatus,md.type disputeType,o.merchant_no merchantNo,o.unique_id        uniqueId,md.content disputeContent,        o.transaction_id transactionId,md.is_reply isReply,md.created_at disputeCreatedAt,o.is_chargeback isChargeback,        o.billing_email billingEmail,o.create_at paymentCreatedAt,        o.application_domain,md.order_id        from merchant_dispute md,transaction_order o        where md.order_id = o.unique_id                    and o.merchant_no = #{merchantNo}                            and o.unique_id = #{uniqueId}                            and md.status = #{disputeStatus}                            and md.type = #{disputeType}                            and md.is_reply = #{isReply}                            and o.is_chargeback = #{isChargeback}                            and o.application_domain = #{applicationDomain}                            and md.order_id = #{orderId}                order by md.created_at desc        limit #{limit} offset #{offset}    

            BO:对前端传递参数进行接收处理

            • 使用DisputeMerchantManageBO处理request的主要目的是为了在业务逻辑层(Service层)中更好地封装业务逻辑和数据处理
              @Datapublic class DisputeMerchantManageBO {    private String merchantNo;    private String uniqueId;    private Integer disputeStatus;    private Integer disputeType;    private Boolean isReply;    private Boolean isChargeback;    private Integer offset;    private Integer limit;    private String orderId;    private String applicationDomain;    public void setOffset(String pageNo, String pageSize) {        this.offset = (Integer.parseInt(pageNo) - 1) * Integer.parseInt(pageSize);    }    public void setLimit(String pageSize) {        this.limit = Integer.parseInt(pageSize);    }    //DisputeMerchantManageRequest 转换成 BO    public static DisputeMerchantManageBO convert(DisputeMerchantManageRequest disputeMerchantManageRequest) {        DisputeMerchantManageBO disputeMerchantManageBO = new DisputeMerchantManageBO();        disputeMerchantManageBO.setMerchantNo(AuthContextHolder.getLoginMerchant().getMerchantNo());        disputeMerchantManageBO.setUniqueId(disputeMerchantManageRequest.getUniqueId());        disputeMerchantManageBO.setDisputeStatus(disputeMerchantManageRequest.getDisputeStatus());        disputeMerchantManageBO.setDisputeType(disputeMerchantManageRequest.getDisputeType());        disputeMerchantManageBO.setIsReply(disputeMerchantManageRequest.getIsReply());        disputeMerchantManageBO.setIsChargeback(disputeMerchantManageRequest.getIsChargeback());        disputeMerchantManageBO.setOffset(disputeMerchantManageRequest.getPageNo(), disputeMerchantManageRequest.getPageSize());        disputeMerchantManageBO.setLimit(disputeMerchantManageRequest.getPageSize());        disputeMerchantManageBO.setOrderId(disputeMerchantManageRequest.getOrderId());        disputeMerchantManageBO.setApplicationDomain(disputeMerchantManageRequest.getApplicationDomain());        return disputeMerchantManageBO;    }}

              request:请求类,前端向后端请求的字段

              DisputeMerchantManageRequest.java

              DisputeMerchantManageRequest:字段对应搜索框需要搜索的字段

              @Datapublic class DisputeMerchantManageRequest extends PageQuery {    private String merchantNo;    private String uniqueId;    private Integer disputeStatus;    private Integer disputeType;    private Boolean isReply;    private Boolean isChargeback;    private String orderId;    private String applicationDomain;}

              response:响应类,后端响应给前端的字段

              DisputeMerchantManageResponse:后端通过DisputeMerchantManageRequest字段查询数据库返回查询出的数据

              @Datapublic class DisputeMerchantManageResponse {    private Long disputeId;    private Integer disputeStatus;    private Integer disputeType;    private String disputeContent;    private String merchantNo;    private String uniqueId;    private String transactionId;    private Boolean isReply;    private Boolean isChargeback;    private String billingEmail;    private Date disputeCreatedAt;    private Date paymentCreatedAt;    private String orderId;    private String applicationDomain;}

              PageResult类

              @Data@SuperBuilder@NoArgsConstructor@AllArgsConstructorpublic class PageResult implements Serializable {    @ApiModelProperty("总记录数")    private Integer total;    private Integer pageNo;    private Integer pageSize;    private Integer totalPage;    @ApiModelProperty("列表数据")    @Builder.Default    private List items = Collections.emptyList();    public static  PageResult toPage(IPage page) {        PageResult result = new PageResult();        result.setItems(page.getRecords());        result.setTotal((int) page.getTotal());        result.setPageNo((int) page.getCurrent());        result.setPageSize((int) page.getSize());        result.setTotalPage(page.getTotal() % page.getSize() == 0 ?                (int) (page.getTotal() / page.getSize()) : (int) (page.getTotal() / page.getSize() + 1));        return result;    }    public static  PageResult toPage(IPage page, List list) {        PageResult result = new PageResult();        result.setItems(list);        result.setTotal((int) page.getTotal());        result.setPageNo((int) page.getCurrent());        result.setPageSize((int) page.getSize());        result.setTotalPage(page.getTotal() % page.getSize() == 0 ?                (int) (page.getTotal() / page.getSize()) : (int) (page.getTotal() / page.getSize() + 1));        return result;    }    public static  PageResult toPage(PageResult res, List list) {        PageResult result = new PageResult();        BeanUtils.copyProperties(res, result);        result.setItems(list);        return result;    }}

              postman测试


              结语:创作不易,如果觉得博主的文章赏心悦目,还请——点赞收藏⭐️评论


上一篇:保姆级教程,安全退出电脑模式全攻略!

下一篇:汽车外观贴纸要备案吗