开发者学堂课程【场景实践 - 基于MongoDB实现商品管理系统:基于Mongodb实现商品管理系统之根据商品编号查询商品信息编写讲解】学习笔记与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/728/detail/13006
基于 Mongodb 实现商品管理系统之根据商品编号查询商品信息编写讲解
通过 id 查询商品信息
------欢迎来到商品管理系统------
输入以下命令进行操作:
C:添加商品D:根据编号删除商品DA:删除所有商品Ⅰ;根据商品编号查询商品信息FA:查询所有商品信息Q:退出
I
请输入要查询的商品编号:
2
商品编号 商品名称 商品价格
2.0 Haier 3000.0
根据商品id查询商品的业务流程:输入要查询的商品编号即可查询
1.编写程序,打开 explorer 进入 web 层:
case "I":
System.out.println
("根据商品编号查询商品信息");
findProducts
ByPid
();
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 findProductsByPid() {
//创建键盘录入的对象
scanner sc = new Scanner(System.in);
注:根据上文,输入i之后会提示“请输入要查询的商品编号”,故要编写提示信息。
//提示
System.out.println ("请输入要查询的商品编号:");
//获取
String pidStr = sc.nextLine();
注:products 是 pid 类型,获取是 string 类型,故要将 string 类型变为 pid 类型。
//强转
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
("对不起,没有您要查询的商品信息");
}
注:因dao层便携式的异常,进行try/catch Block操作。
}
catch
(
Exception e
){
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();
//输出
S
ystem
.out.println(product.get(
“pid”+“
\t
”
+product.get(
“p
name
”+“
\t
”
+product.get(
“p
rice
”
));
}
}
}
}
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);
}
3.编写 dao 层
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{
注:有异常,要对public DBCursor findProductsByPid(int pid)
、service
层进行声明(throws),对web进行try/catch Block操作。
//获取数据库连接
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);
注:put的功能:如果添加的key存在是修改,不存在是添加。
//将basicDBObject作为参数到数据库中查询商品
DBCursor cur= coll.find(basicDBObject);
注:coll.find(basicDBObject) 访问出来是个游标 cur,之后将游标返回给前台。
return
cur
;
}
流程:首先是连接数据库,获取数据库中的集合,之后创建一个类basicDBObject,然后将pid放在底层HashMap里,通过coll.find(basicDBObject)传输数据,底层根据传过去的key进行查询,查询到的信息放入游标中,之后返回到前台service层中,service层再返回到web层中,web层输出。
执行结果:
------欢迎来到商品管理系统------
输入以下命令进行操作:
C:添加商品D:根据编号删除商品DA:删除所有商品Ⅰ;根据商品编号查询商品信息FA:查询所有商品信息Q:退出
I
请输入要查询的商品编号:
2
商品编号 商品名称 商品价格
2.0 Haier 3000.0
------欢迎来到商品管理系统------
输入以下命令进行操作:
C:添加商品D:根据编号删除商品DA:删除所有商品Ⅰ;根据商品编号查询商品信息FA:查询所有商品信息Q:退出
根据MongoVUE中table view,商品编号为2的商品名称为haier。
输入不存在的商品编号:
I
请输入要查询的商品编号:
78
对不起,没有您要查询的商品信息
------欢迎来到商品管理系统------
输入以下命令进行操作:
C:添加商品D:根据编号删除商品DA:删除所有商品Ⅰ;根据商品编号查询商品信息FA:查询所有商品信息Q:退出