我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Java 多输入框查询需求实现

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Java 多输入框查询需求实现

在这里插入图片描述

💗wei_shuo的个人主页

💫wei_shuo的学习社区

🌐Hello World !


多输入框查询

需求分析

在这里插入图片描述

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

代码实现

Controller接口编写

 @PostMapping("merchant/manage") public Result<PageResult<DisputeMerchantManageResponse>> 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<DisputeMerchantManageResponse> merchantDisputeManage(DisputeMerchantManageRequest request) {       DisputeMerchantManageBO manageBO = DisputeMerchantManageBO.convert(request);               List<DisputeMerchantManageResponse> list = merchantDisputeService.merchantDisputeManage(manageBO);           PageResult<DisputeMerchantManageResponse> pageResult = PageResult.                   <DisputeMerchantManageResponse>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<DisputeMerchantManageResponse> pageResult = PageResult.                   <DisputeMerchantManageResponse>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<DisputeMerchantManageResponse> 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<DisputeMerchantManageResponse> merchantDisputeManage(DisputeMerchantManageBO disputeMerchantManageBO);

Mapper.xml

  • 通过联表查询,查询merchant_dispute和transaction_order表对应字段,通过对disputeMerchantManageBO字段传入的条件动态生成查询语句,并按照创建时间进行降序排序,最后返回指定分页范围内的结果
    <select id="merchantDisputeManage" resultType="com.moozumi.bean.response.dispute.DisputeMerchantManageResponse">        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        <if test="merchantNo != null and merchantNo != ''">            and o.merchant_no = #{merchantNo}        if>        <if test="uniqueId != null and uniqueId != ''">            and o.unique_id = #{uniqueId}        if>        <if test="disputeStatus != null">            and md.status = #{disputeStatus}        if>        <if test="disputeType != null">            and md.type = #{disputeType}        if>        <if test="isReply != null">            and md.is_reply = #{isReply}        if>        <if test="isChargeback != null">            and o.is_chargeback = #{isChargeback}        if>        <if test="applicationDomain != null and applicationDomain != ''">            and o.application_domain = #{applicationDomain}        if>        <if test="orderId != null and orderId != ''">            and md.order_id = #{orderId}        if>        order by md.created_at desc        limit #{limit} offset #{offset}    select>

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<T> implements Serializable {    @ApiModelProperty("总记录数")    private Integer total;    private Integer pageNo;    private Integer pageSize;    private Integer totalPage;    @ApiModelProperty("列表数据")    @Builder.Default    private List<T> items = Collections.emptyList();    public static <T> PageResult<T> toPage(IPage<T> page) {        PageResult<T> 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 <T> PageResult<T> toPage(IPage<?> page, List<T> list) {        PageResult<T> 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 <T> PageResult<T> toPage(PageResult<?> res, List<T> list) {        PageResult<T> result = new PageResult<>();        BeanUtils.copyProperties(res, result);        result.setItems(list);        return result;    }}

postman测试

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


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


在这里插入图片描述

来源地址:https://blog.csdn.net/weixin_62765017/article/details/132038818

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Java 多输入框查询需求实现

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

java怎么实现多行输入

在Java中,可以使用Scanner类来实现多行输入。下面是一个示例代码:```javaimport java.util.Scanner;public class Main {public static void main(String[]
2023-10-12

thinkphp框架如何实现多表查询

本文小编为大家详细介绍“thinkphp框架如何实现多表查询”,内容详细,步骤清晰,细节处理妥当,希望这篇“thinkphp框架如何实现多表查询”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。简介thinkphp框
2023-07-06

jquery如何实现输入关键字查询功能

本篇内容主要讲解“jquery如何实现输入关键字查询功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“jquery如何实现输入关键字查询功能”吧!一、前置准备在使用JQuery的输入关键字查询之
2023-07-05

怎么用Java设计实现多实例多库查询

这篇文章主要介绍“怎么用Java设计实现多实例多库查询”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么用Java设计实现多实例多库查询”文章能帮助大家解决问题。服务的边界职责 大数据层取数统一实现
2023-07-05

java实现多行输入的方法是什么

在Java中实现多行输入的方法有多种,下面列举了其中的两种方法:方法一:使用Scanner类的nextLine()方法```javaimport java.util.Scanner;public class Main {public sta
2023-09-23

java多级菜单模糊查询怎么实现

要实现 Java 多级菜单的模糊查询,可以使用递归的方式来遍历菜单结构,然后根据输入的关键词来筛选匹配的菜单项。以下是一个简单的示例代码,演示了如何实现多级菜单的模糊查询:import java.util.ArrayList;impo
java多级菜单模糊查询怎么实现
2024-03-13

php如何实现边输入边显示查询结果功能

这篇文章主要介绍了php如何实现边输入边显示查询结果功能的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇php如何实现边输入边显示查询结果功能文章都会有所收获,下面我们一起来看看吧。PHP是一种常用的服务器端脚本
2023-07-06

实现HTML页面跳转到PHP页面时姓名输入框的必填要求

在HTML页面跳转到PHP页面时,如果需要在姓名输入框中加入必填要求,可以通过HTML的表单元素和JavaScript实现。下面将详细介绍如何实现这一功能,并附上具体的代码示例。首先,我们创建一个HTML页面,包含一个表单和一个姓名输入框
实现HTML页面跳转到PHP页面时姓名输入框的必填要求
2024-03-10

mongoDB数据库中的多条件查询怎么利用Java实现

mongoDB数据库中的多条件查询怎么利用Java实现?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。客户端代码:db.url.find({index:4,status:0,ur
2023-05-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录