基于Mongodb实现商品管理系统之查询所有商品信息编写讲解|学习笔记

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: 快速学习基于 Mongodb 实现商品管理系统之查询所有商品信息编写讲解

开发者学堂课程【场景实践 - 基于MongoDB实现商品管理系统基于Mongodb实现商品管理系统之查询所有商品信息编写讲解】学习笔记与课程紧密联系,让用户快速学习知识

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


基于Mongodb实现商品管理系统之查询所有商品信息编写讲解

 

一、查询所有商品信息

查询所有商品信息的业务流程:

在控制台输入FA,就会将数据库表中的所有商品信息显示在控制台。

1.Web 层操作:

public class Productweb {

public static void main(String[] args) {

//创建键盘录入的对象

Scanner sc= new Scanner(System.in);

//为了让程序能够回到这里,我们使用循环

while(true)

//提示

System.out.println("--------欢迎来到商品管理系统--------");

System.out.println("输入以下命令进行操作:");

System.out.println("C:添加商品D:根据编号删除商品DA:删除所有商品Ⅰ:根据商品编号查询商品信息FA:查询所有商品信息Q:退出");

//获取输入的信息

string inputChoice = sc.nextLine();

//使用多分支进行选择

switch( inputChoice.toUpperCase())

case "C":

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

break;

case "D":

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

break;

case "DA":

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

break;

case "I":

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

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 findAllProducts() {

//创建业务层对象

ProductService productservice = new ProductService();

注:在数据库中没有 productservice 类,要创建在 service 层。

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

DBCursor cur=productService.findA1lProducts();

注:返回值是多条数据,多条数据用 Mongodb 中提供的 API—DBCursor

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

if(cur.size() == 0)

{

//说明没有数据

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

}else

{

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

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

while(cur.hasNext())

注:cur.hasNext() 是用来判断是否还有数据,有数据返回TRUE,无数据返回 FALSE

{

//获取商品获取每一行

DBobject product= cur.next();

注:product 表示一行数据,DBobject 类型里的数据,如{“name”=“BMW”}

//输出

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

}

}

}

}

至此,web层写完,之后创建service层 

2.编写service层

package com.itheima.sh.service;

import com.itheima. sh.dao.ProductDao;

import com.mongodb.DBCursor;

public class productservice {

//查询所有商品信息

public DBCursor findAllproducts() {

//创建dao层的对象

ProductDao dao=new product Dao();

Return dao.findAllproducts()

}

}

注:findAllproducts 是属于 dao 层的,接下来要创建方法,方法是用来查询所有商品信息。

之后完成 dao 层的创建:

3.编写 dao 层

package com.itheima. sh.dao;

import com.itheima.sh.utils.MongoDBUtils;

import com.mongodb.DBCursor;

public class ProductDao {

//查询所有商品信息

public DBCursor findAllproducts() {

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

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

return null;

}

}

注:因为db有异常,所以要进行声明:

public DBCursor findAllproducts() throws Exception{

service 层也要改变为:

package com.itheima.sh.service;

import com.itheima. sh.dao.ProductDao;

import com.mongodb.DBCursor;

public class productservice {

//查询所有商品信息

public DBCursor findAllproducts() throws Exception {

//创建 dao 层的对象

ProductDao dao=new product Dao();

Return dao.findAllproducts()

}

}

对 Web 层 DBCursor cur 后的信息进行 try/catch Block 操作:

ProductService productservice = new ProductService();

try{

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

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”));

}

}

} catch (Exception e) {

System.out.println(查询所有商品失败"+e);

}

}

接下来继续编写 dao 层

package com.itheima. sh.dao;

import com.itheima.sh.utils.MongoDBUtils;

import com.mongodb.DBCursor;

public class ProductDao {

//查询所有商品信息

public DBCursor findAllproducts() {

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

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

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

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

return null;

}

}

DB db=MongoDBUtils.getDB("itcast");是获取具体的数据库。而 itcast 数据库下有三个集合,我们要获取的是 products,products 的类型属于DBcollection,通过coll可以获取对应信息。

public class ProductDao {

//查询所有商品信息

public DBCursor findAllproducts() {

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

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

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

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

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

coll.find()

Return null;

}

}

Find 是放在游标里的,所以:

public class ProductDao {

//查询所有商品信息

public DBCursor findAllproducts() {

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

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

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

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

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

DBCursor cur=coll.find()

Return cur;

}

}

Dao层游标返回,之后就给service层,service层又把游标返回到web层,web层拿到之后判断,有数据就取出;没有数据打印“对不起,数据库中没有您要查询的数据”。

接下来进行运行:

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

输入以下命令进行操作:

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

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

输入以下命令进行操作:

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

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
1月前
|
存储 NoSQL MongoDB
掌握MongoDB索引优化策略:提升查询效率的关键
在数据库性能调优中,索引是提升查询效率的利器。本文将带你深入了解MongoDB索引的内部工作原理,探讨索引对查询性能的影响,并通过实际案例指导如何针对不同的查询模式建立有效的索引。不仅将涵盖单一字段索引,还会探讨复合索引的使用,以及如何通过分析查询模式和执行计划来优化索引,最终实现查询性能的最大化。
|
24天前
|
存储 NoSQL MongoDB
MongoDB 查询分析
10月更文挑战第21天
11 1
|
24天前
|
NoSQL MongoDB 索引
MongoDB 覆盖索引查询
10月更文挑战第21天
23 1
|
30天前
|
SQL NoSQL MongoDB
MongoDB 查询文档
10月更文挑战第15天
14 1
|
1月前
|
运维 NoSQL BI
简道云搭载阿里云MongoDB数据库,帮助数以万计企业重构业务系统
通过与MongoDB和阿里云团队的合作,让简道云少走了弯路,保障了线上服务的长期稳定运行,提高了吞吐效率,并相应降低了线上运行成本
|
1月前
|
人工智能 NoSQL 机器人
MongoDB Atlas与YoMio.AI近乎完美适配:推理更快速、查询更灵活、场景更丰富
随着MongoDB的新发布和革新,YoMio.AI的“闪电式发展”值得期待。
|
2月前
|
SQL NoSQL JavaScript
04 MongoDB各种查询操作 以及聚合操作总结
文章全面总结了MongoDB中的查询操作及聚合操作,包括基本查询、条件筛选、排序以及聚合管道的使用方法和实例。
77 0
|
3月前
|
C# 微服务 Windows
模块化革命:揭秘WPF与微服务架构的完美融合——从单一职责原则到事件聚合器模式,构建高度解耦与可扩展的应用程序
【8月更文挑战第31天】本文探讨了如何在Windows Presentation Foundation(WPF)应用中借鉴微服务架构思想,实现模块化设计。通过将WPF应用分解为独立的功能模块,并利用事件聚合器实现模块间解耦通信,可以有效提升开发效率和系统可维护性。文中还提供了具体示例代码,展示了如何使用事件聚合器进行模块间通信,以及如何利用依赖注入进一步提高模块解耦程度。此方法不仅有助于简化复杂度,还能使应用更加灵活易扩展。
100 0
|
1月前
|
存储 关系型数据库 MySQL
一个项目用5款数据库?MySQL、PostgreSQL、ClickHouse、MongoDB区别,适用场景
一个项目用5款数据库?MySQL、PostgreSQL、ClickHouse、MongoDB——特点、性能、扩展性、安全性、适用场景比较
|
22天前
|
NoSQL Cloud Native atlas
探索云原生数据库:MongoDB Atlas 的实践与思考
【10月更文挑战第21天】本文探讨了MongoDB Atlas的核心特性、实践应用及对云原生数据库未来的思考。MongoDB Atlas作为MongoDB的云原生版本,提供全球分布式、完全托管、弹性伸缩和安全合规等优势,支持快速部署、数据全球化、自动化运维和灵活定价。文章还讨论了云原生数据库的未来趋势,如架构灵活性、智能化运维和混合云支持,并分享了实施MongoDB Atlas的最佳实践。