开发者学堂课程【场景实践 - 基于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:退出