Java后端开发中使用二分查找的小案例

前言

在传统的Java后端开发过程中,书写最多的代码便是crud。什么是crud呢?简单来说就是,对数据进行增删改查,然后将结果返回给用户。在我们开发过程中使用的数据类型往往是结构化数据,例如MySql当中我们所建立的各种表以及表中的数据。

一个看似不是很合理的需求

  • 更新商品的信息(包括id

乍一看好像也没什么问题,sql语句也好写(mybatis),不就是

bash 复制代码
update table set  id = newId , name = xxx.name where id = xxx.id

实现过程

1、实体类

arduino 复制代码
​
@Data
public class Commodity implements Serializable {
​
    /**
     * 商品ID
     */
    private Integer id;
​
    /**
     * 商品名称
     */
    private String name;
​
    /**
     * 卖家
     */
    private String seller;
​
    /**
     * 库存
     */
    private Integer inventory;
​
    /**
     * 价格
     */
    private Float price;
​
    private static final long serialVersionUID = 797972520302738355L;
​
}

2、mybatis

接口方法 xml文件

3、service层(此处省略)

懂得都懂,我这里也没有进行多余的操作,基本就是复制粘贴,对象注入去实现。

4、controller层

此处就会有问题

如果newId和数据库原来数据发生重复 就会出错,所以我们需要进行校验。 其实就是检验newId是否在数据库已经有的id列表当中。

实现思路

  1. 获取所有商品的id信息存放在idList中 select id from commodity
  2. 使用二分法判断idList是否包含newId
  3. 执行更新操作
此外我就展示controller的代码,因为其他代码的难度不大

思考

  1. id 为主键 ,为什么要修改id呢?所以我才会说这是一个不是很合理的需求
  2. 使用mybatisplus当中的QueryWrapper封装的方法也是可以实现的。
  3. 数据量非常大的情况下,使用二分法去进行查找,效率如何呢?
相关推荐
Uluoyu8 小时前
支持Word (doc/docx) 和 PDF 转成一张垂直拼接的长PNG图片工具类
java·pdf·word
__XYZ8 小时前
RedisTemplate 实现分布式锁
java·spring boot·redis·分布式·junit
闭着眼睛学算法8 小时前
【双机位A卷】华为OD笔试之【模拟】双机位A-新学校选址【Py/Java/C++/C/JS/Go六种语言】【欧弟算法】全网注释最详细分类最全的华子OD真题题解
java·c语言·javascript·c++·python·算法·华为od
源码_V_saaskw9 小时前
JAVA校园跑腿校园外卖源码校园外卖小程序校园代买帮忙外卖源码社区外卖源码小程序+公众号+h5
java·开发语言·微信小程序·小程序
源码哥_博纳软云9 小时前
JAVA同城预约服务家政服务美容美发洗车保洁搬家维修家装系统源码小程序+公众号+h5
java·开发语言·微信小程序·小程序
盖世英雄酱581369 小时前
分库分表正在被淘汰
数据库·后端
红尘客栈29 小时前
Kubernetes 集群调度
java·linux·网络·容器·kubernetes
编程岁月9 小时前
java面试-0203-java集合并发修改异常、快速/安全失败原理、解决方法?
java·开发语言·面试
间彧9 小时前
CountDownLatch详解与项目实战
后端
无名之辈J9 小时前
Spring Boot 对接微信支付
后端