基于 Mongodb 实现商品管理系统之向数据库中添加商品编写讲解|学习笔记

简介: 快速学习基于 Mongodb 实现商品管理系统之向数据库中添加商品编写讲解

开发者学堂课程【场景实践 - 基于MongoDB实现商品管理系统基于Mongodb实现商品管理系统之向数据库中添加商品编写讲解】学习笔记与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/728/detail/13007


基于 Mongodb 实现商品管理系统之向数据库中添加商品编写讲解

 

一、添加商品

添加商品的流程:

------欢迎来到商品管理系统------

输入以下命令进行操作:

C:添加商品D:根据编号删除商品DA:删除所有商品Ⅰ;根据商品编号查询商品信息FA:查询所有商品信息Q:退出

C

请输入增加商品的编号

10

请输入增加商品的名称

Benchi

请输入增加商品的名称

918187

添加商品成功

 

添加商品的业务流程图:

image.png

在添加商品之前,要对 Mongodb 的工具类进行升级,下面是升级版工具类:

public class MongoDeUtils {

//1.使用 connection 用来保存 Mongo 的数据库连接对象 static Mongo connection = null;

//2.使用 d b 接收具体的数据库连接 static DB db - null;

//3.定义 coll 接收数据表的连接

static DBcollection coll = null;

public static De getDB (String dbName) throws Exception {

//创建一个 Mongo 的数据库连接对象

connection = new Mongo("127.0.0.1: 27017");

//通过获取数据库的连接对象connection根据传递的数据库名 dbName 来连接具体的数据库

db = connection.getDB( dbName);

//将具体的数据库连接返回给调用者

return db;

}

public static DBcollection getlollection(String dbName,String collName) throwsException {

//创建一个 Mongo 的数据库连接对象

connection = new Mongo("127.0.0.1:27017”);

//通过获取数据库的连接对象 connection 根据传递的数据库名 dbName 来连接具体的数据库

db = connection.getDB( dbName) ;

coll = db.getcollection( collName);

//将具体的数据库连接返回给调用者

return coll;

}

}

1.web 层入口

//使用多分支进行选择

switch( inputChoice.toUpperCase())

case "C":

System.out.println("添加商品");

//调用方法向数据库中添加商品

addproduct();

break;

case "D":

System.out.println("根据编号删除商品");

break;

case "DA":

System.out.println("删除所有商品");

break;

case "I":

System.out.println("根据商品编号查询商品信息");

findProductsByPid();

break;

case "FA":

System.out.println("查询所有商品信息");

//调用方法查询所有商品信息

findALLProducts();

break;

case "Q":

System.out.println("退出");

break;

default:

System.out.println("退出");

System.out.println("谢谢光临");

//终止虚拟机

System.exit(0)

break;

}

}

}

//添加商品

public static void addProduct() {

注:根据上文流程,下面要创建录入对象以及提示和获取

Scanner sc = new Scanner(System.in);

Try {

//提示

System.out.println("请输入商品编号:");

//获取

String pidStr = sc.nextLine();

int pid = Integer.parseInt(pidStr);

//提示

System.out.println(请输入商品名称:");

//获取

String panme = sc.nextLine();

//提示

System.out.println(请输入商品价格:");

//获取

String priceStr = sc.nextLine();

注:发现数据库中的 price 类型是 int 类型,最开始设置的类型的 double,现在要将product.java 中的double都改为 int,之后进行强转。

Int price=Integer.parseInt(priceStr)

注:下面要将添加数据传到业务层,将添加封装到JavaBean中。

//创建 Product 类对象

Product p = new Product();

//封装数据

p.setPid(pid);

p.setPname(pname);

p.setPrice(price);

//创建业务层对象

ProductService productService = new ProductService();

//调用方法向业务层传递数据

productService.addProduct(p);

System.out.println(:“商品添加成功”);

}catch (Exception e) {

System.out.println("添加商品失败"+e);

}

}

//根据商品编号查询商品信息

public static void findProductsByPid() {

//创建键盘录入的对象

scanner sc = new Scanner(System.in);

//提示

System.out.println("请输入要查询的商品编号:");

//获取

String pidStr = sc.nextLine();

//强转

int pid = Integer.parseInt(pidStr);

//创建业务层对象

ProductService productService = new ProductService();

//调用方法根据录入商品pid到数据库中查询商品信息

DBCursor cur=productService.findProductsByPid(pid);

//根据游标cur判断是否存在录入的pid对应的商品

if(cur.size() != 0)

{

//说明有该商品

System.out.print1n("商品编号\t商品名称\t商品价格");

//遍历右边

while(cur.hasNext())

{

//说明有数据

//取出商品

DBObject product = cur.next();

//输出system.out.println(product.get("pid")+"\t"+product.get("pname")+"\t"+product.get( "price")];

}

}else

{

System.out.println("对不起,没有您要查询的商品信息");

}

System.out.println("根据商品编号查询商品失败"+e);

}

}

//查询所有商品信息

public static void findAllProducts() {

//创建业务层对象

ProductService productservice = new ProductService();

//调用方法获取所有商品信息

DBCursor cur=productService.findA1lProducts();

//根据cur判断数据库中是否含有数据

if(cur.size() == 0)

{

//说明没有数据

System.out.println("对不起,数据库中没有您要查询的数据");

}else

{

//说明有数据 获取 cur 游标中的数据

System.out.println("商品编号\t商品名称\t商品价格");

while(cur.hasNext())

{

//获取商品获取每一行

DBobject product= cur.next();

//输出

System.out.println(product.get(“pid”+“\t” +product.get(“pname”+“\t”+product.get(“price”));

}

}

}

}

2.创建 service 层

package com.itheima.sh.service;

import com.itheima. sh.dao.ProductDao;

import com.mongodb.DBCursor;

public class productservice {

//创建dao层的对象

ProductDao dao=new productDao();

//查询所有商品信息

public DBCursor findAllProducts( ) throws Exception {

Return dao.findAllproducts()

}

//根据商品编号查询商品信息

public DBCursor findProductsByPid(int pid) throws Exception{

return dao.findProductsByPid(pid);

}

//添加商品

public void addProduct(Product p) throws Exception {

dao.addProduct(p);

}

} 

3.创建 web 层

package com.itheima.sh.dao;

import com.itheima.sh.utils.MongoDBUtils;

import com.mongodb.DB;

import com.mongodb.DBCollection;

import com.mongodb.DBCursor;

public class ProductDao {

//查询所有商品信息

public DBCursor findAllProducts( ) throws Exception {

//根据工具类中的方法获取数据库连接

DB db = MongoDBUtils.getDB("itcast");

//根据数据库连接获取对应的集合

DBCollection coll = db.getCollection("products");

//使用coll对象调用方法获取数据

DBCursor cur = coll.find();

return cur;

}

//根据商品编号查询商品信息

public DBCursor findProductsByPid(int pid) throws Exception{

DB db = MongoDBUtils.getDB( "itcast");

//获取数据库中表(集合)连接

DBCollection coll=db.getCollection(“products”);

//创建对象——目的是将pid传到数据库底层

DBObject属于BasicDBObject类副接口

//BasicDBObject底层是HashMap   类似于{“pid”=pid}结构

DBObject basicDBObject = new BasicDBObject();

//将pid添加BasicDBObject

basicDBObject.put( "pid", pid);

DBCursor cur= coll.find(basicDBObject);

return cur;

}

//添加商品

public void addProduct(Product p) throws Exception {

注:有异常,要对service层和dao层进行声明(throws),对web进行try/catch Block操作。

//获取集合连接

DBCollection coll =MongoDBUtils.getCollection("itcast","products");

//创建对象

DBObject db=new BasicDB0bject();

//添加数据

db.put("pid", p.getPid());

db.put("pname", p.getPname());

db.put("price", p.getPrice());

//使用集合连接将插入到数据库中

coll.insert(db);

}

}

image.png

数据库中的数据如上图所示,pid最大是9,下面尝试添加10:

运行结果:

添加商品的流程:

------欢迎来到商品管理系统------

输入以下命令进行操作:

C:添加商品D:根据编号删除商品DA:删除所有商品Ⅰ;根据商品编号查询商品信息FA:查询所有商品信息Q:退出

C

请输入增加商品的编号

10

请输入增加商品的名称

Audi

请输入增加商品的名称

898988

商品添加成功

------欢迎来到商品管理系统------

输入以下命令进行操作:

C:添加商品D:根据编号删除商品DA:删除所有商品Ⅰ;根据商品编号查询商品信息FA:查询所有商品信息Q:退出

 

查询商品信息是否添加成功:

FA

商品编号   商品名称   商品价格

1.0         lenovo    5000.0

2.0         Haier     3000.0

3.0         Thor      5000.o

4.0         Nike       800.0

5.0         Dior       2000.0

6.0         HERMES   2400.0

7.0         MK        4000.0

8.0        CHANEL    800.0

9.0        BMW       20000.0

10         audi       898988

------欢迎来到商品管理系统------

输入以下命令进行操作:

C:添加商品D:根据编号删除商品DA:删除所有商品Ⅰ;根据商品编号查询商品信息FA:查询所有商品信息Q:退出

发现添加的商品信息已经添加成功,之后刷新数据库,重新查询数据:image.png

相关文章
|
5月前
|
缓存 NoSQL Linux
在CentOS 7系统中彻底移除MongoDB数据库的步骤
以上步骤完成后,MongoDB应该会从您的CentOS 7系统中被彻底移除。在执行上述操作前,请确保已经备份好所有重要数据以防丢失。这些步骤操作需要一些基本的Linux系统管理知识,若您对某一步骤不是非常清楚,请先进行必要的学习或咨询专业人士。在执行系统级操作时,推荐在实施前创建系统快照或备份,以便在出现问题时能够恢复到原先的状态。
470 79
|
3月前
|
安全 关系型数据库 数据管理
阿里云数据库:构建高性能与安全的数据管理系统
阿里云数据库提供RDS、PolarDB、Tair等核心产品,具备高可用、弹性扩展、安全合规及智能运维等技术优势,广泛应用于电商、游戏、金融等行业,助力企业高效管理数据,提升业务连续性与竞争力。
|
8月前
|
前端开发 数据库
会议室管理系统源码(含数据库脚本)
会议室管理系统源码(含数据库脚本)
149 0
|
5月前
|
SQL 监控 安全
数据库安全审计系统
Next-DBM数据库审计系统助力企业解决数据安全难题,提供统一身份管理、全方位监控、智能风险识别、完整审计追溯及精细化权限管控,有效防范数据泄露与内部威胁,保障企业核心资产安全,满足合规要求,提升运维效率。
|
8月前
|
Java 数据库
jsp CRM客户管理系统(含数据库脚本以及文档)
jsp CRM客户管理系统(含数据库脚本以及文档)
178 10
|
9月前
|
前端开发 Java 关系型数据库
基于ssm的社区物业管理系统,附源码+数据库+论文+任务书
社区物业管理系统采用B/S架构,基于Java语言开发,使用MySQL数据库。系统涵盖个人中心、用户管理、楼盘管理、收费管理、停车登记、报修与投诉管理等功能模块,方便管理员及用户操作。前端采用Vue、HTML、JavaScript等技术,后端使用SSM框架。系统支持远程安装调试,确保顺利运行。提供演示视频和详细文档截图,帮助用户快速上手。
414 17
|
9月前
|
前端开发 Java 关系型数据库
基于ssm的超市会员(积分)管理系统,附源码+数据库+论文,包安装调试
本项目为简单内容浏览和信息处理系统,具备管理员和员工权限。管理员可管理会员、员工、商品及积分记录,员工则负责积分、商品信息和兑换管理。技术框架采用Java编程语言,B/S架构,前端使用Vue+JSP+JavaScript+Css+LayUI,后端为SSM框架,数据库为MySQL。运行环境为Windows,JDK8+Tomcat8.5,非前后端分离的Maven项目。提供演示视频和详细文档,购买后支持免费远程安装调试。
429 19
|
9月前
|
前端开发 Java 关系型数据库
基于ssm的网络直播带货管理系统,附源码+数据库+论文
该项目为网络直播带货网站,包含管理员和用户两个角色。管理员可进行主页、个人中心、用户管理、商品分类与信息管理、系统及订单管理;用户可浏览主页、管理个人中心、收藏和订单。系统基于Java开发,采用B/S架构,前端使用Vue、JSP等技术,后端为SSM框架,数据库为MySQL。项目运行环境为Windows,支持JDK8、Tomcat8.5。提供演示视频和详细文档截图。
295 10
|
9月前
|
前端开发 Java 关系型数据库
基于ssm的台球厅管理系统,附源码+数据库+论文
本项目为新锐台球厅管理系统,支持管理员和会员两种角色。管理员可进行会员管理、台球桌管理、订单管理等;会员可查看台球桌、预约、购买商品等。技术框架基于Java,采用B/S架构,前端使用Vue+HTML+JavaScript+CSS+LayUI,后端使用SSM框架,数据库为MySQL。运行环境为Windows,JDK8+MySQL5.7+Tomcat8.5。提供演示视频及详细文档截图。
|
9月前
|
存储 监控 数据挖掘
消防行业如何借助时序数据库 TDengine 打造高效的数据监控与分析系统
本篇文章来自“2024,我想和 TDengine 谈谈”征文活动的优秀投稿,深入探讨了如何在消防行业中运用 TDengine 进行业务建模。文章重点介绍了如何通过 TDengine 的超级表、标签设计和高效查询功能,有效管理消防监控系统中的时序数据。作者详细阐述了实时监控、报警系统以及历史数据分析在消防行业中的应用,展示了 TDengine 在数据压缩、保留策略和分布式架构下的强大优势。
280 0

推荐镜像

更多