0

0

在Java里如何实现商品管理与查询功能_Java基础CRUD项目说明

P粉602998670

P粉602998670

发布时间:2026-02-06 12:55:03

|

749人浏览过

|

来源于php中文网

原创

用ArrayList暂存商品实现增删改查,id必须唯一,操作前先findById校验存在性,查询分findById和findByName两类,返回统一List避免null,控制台用switch分支管理流程,修改须调用setter而非新建对象。

在java里如何实现商品管理与查询功能_java基础crud项目说明

ArrayList 存商品,别急着上数据库

新手直接连 MySQL 容易卡在驱动、URL、异常处理上,先用内存集合把增删改查逻辑跑通更实际。ArrayList 足够承载百条以内商品数据,所有操作都围绕它展开。重点不是“多快”,而是“每步能 print 出来”。Product 类至少要有 idnameprice 三个字段,且 id 必须唯一——否则后续按 ID 查找会出错。

  • add(Product p):插入前先遍历检查 id 是否已存在,重复就跳过或抛 IllegalArgumentException
  • findById(int id):用 for 循环逐个比对,别依赖 stream().filter(),避免初学时搞不清空指针或 Optional 处理
  • 删除和修改也必须先 findById,确认对象存在再操作,否则容易 NullPointerException

查询要分场景:模糊搜名字 vs 精确查 ID

用户输入 “手机” 和输入 “1001” 是两类需求,代码不能混在一起写。一个方法只做一件事:findByName(String keyword) 做子串匹配(用 name.contains(keyword)),findById(int id) 做数值相等判断。别把两个逻辑塞进同一个方法里加 if 分支——后期加价格区间查询、分类筛选时会越来越难维护。

  • name.contains(keyword) 区分大小写,如需忽略,改用 name.toLowerCase().contains(keyword.toLowerCase())
  • 返回结果统一用 List,即使只查到一个也返回单元素列表,调用方不用反复判 null 或类型转换
  • 查不到时返回空 new ArrayList(),而不是 null,避免调用方漏判空指针

控制台交互别写死 while(true),用 switch + break 控制流程

很多教程用无限循环加 break 跳出,实际一不小心就陷入死循环。更稳妥的是把菜单选项转成整数,用 switch 分支明确每个操作的入口和出口:

System.out.println("1. 添加商品");
System.out.println("2. 按ID查询");
System.out.println("3. 按名称搜索");
System.out.print("请选择:");
int choice = scanner.nextInt();
switch (choice) {
    case 1: addProduct(); break;
    case 2: showById(); break;
    case 3: showByName(); break;
    default: System.out.println("无效选项"); break;
}

这样每选一次就执行一个动作,不自动回到开头,方便调试单个功能;想循环只需在外层包一层 while,且可随时加退出条件(比如输入 0 就 break)。

Pebblely
Pebblely

AI产品图精美背景添加

下载

立即学习Java免费学习笔记(深入)”;

修改商品时,别 new 新对象覆盖原引用

常见错误是:查出对象后,Product p = findById(1001); p.setName("新手机"); —— 这没问题;但有人会写成 p = new Product(1001, "新手机", 2999);,这就断开了和原 ArrayList 中对象的引用关系,原列表里的数据根本没变。

  • 修改必须通过 setter 改已有实例的字段,而不是重新赋值变量
  • 如果要用新对象替换,得先用 list.indexOf(oldP) 找下标,再用 list.set(index, newP)
  • 更安全的做法是:修改操作统一走 updateById(int id, String name, double price) 方法,在内部完成查找 + 字段赋值

真正容易被忽略的,是商品 ID 的连续性假设——没人规定 ID 必须从 1 开始递增,所以所有基于“第几个元素”的操作(比如 get(0))都是错的,必须严格依赖 id 字段做查找。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
mysql修改数据表名
mysql修改数据表名

MySQL修改数据表:1、首先查看数据库中所有的表,代码为:‘SHOW TABLES;’;2、修改表名,代码为:‘ALTER TABLE 旧表名 RENAME [TO] 新表名;’。php中文网还提供MySQL的相关下载、相关课程等内容,供大家免费下载使用。

669

2023.06.20

MySQL创建存储过程
MySQL创建存储过程

存储程序可以分为存储过程和函数,MySQL中创建存储过程和函数使用的语句分别为CREATE PROCEDURE和CREATE FUNCTION。使用CALL语句调用存储过程智能用输出变量返回值。函数可以从语句外调用(通过引用函数名),也能返回标量值。存储过程也可以调用其他存储过程。php中文网还提供MySQL创建存储过程的相关下载、相关课程等内容,供大家免费下载使用。

329

2023.06.21

mongodb和mysql的区别
mongodb和mysql的区别

mongodb和mysql的区别:1、数据模型;2、查询语言;3、扩展性和性能;4、可靠性。本专题为大家提供mongodb和mysql的区别的相关的文章、下载、课程内容,供大家免费下载体验。

282

2023.07.18

mysql密码忘了怎么查看
mysql密码忘了怎么查看

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql密码忘了怎么办呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

517

2023.07.19

mysql创建数据库
mysql创建数据库

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql怎么创建数据库呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

259

2023.07.25

mysql默认事务隔离级别
mysql默认事务隔离级别

MySQL是一种广泛使用的关系型数据库管理系统,它支持事务处理。事务是一组数据库操作,它们作为一个逻辑单元被一起执行。为了保证事务的一致性和隔离性,MySQL提供了不同的事务隔离级别。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

387

2023.08.08

sqlserver和mysql区别
sqlserver和mysql区别

SQL Server和MySQL是两种广泛使用的关系型数据库管理系统。它们具有相似的功能和用途,但在某些方面存在一些显著的区别。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

536

2023.08.11

mysql忘记密码
mysql忘记密码

MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。那么忘记mysql密码我们该怎么解决呢?php中文网给大家带来了相关的教程以及其他关于mysql的文章,欢迎大家前来学习阅读。

610

2023.08.14

1688阿里巴巴货源平台入口与批发采购指南
1688阿里巴巴货源平台入口与批发采购指南

本专题整理了1688阿里巴巴批发进货平台的最新入口地址与在线采购指南,帮助用户快速找到官方网站入口,了解如何进行批发采购、货源选择以及厂家直销等功能,提升采购效率与平台使用体验。

21

2026.02.06

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
MySQL 教程
MySQL 教程

共48课时 | 2.1万人学习

MySQL 初学入门(mosh老师)
MySQL 初学入门(mosh老师)

共3课时 | 0.3万人学习

简单聊聊mysql8与网络通信
简单聊聊mysql8与网络通信

共1课时 | 823人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号