开发者学堂课程【场景实践 - 基于MongoDB实现商品管理系统:基于Mongodb实现商品管理系统之向数据库中添加商品编写讲解】学习笔记与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/728/detail/13007
基于 Mongodb 实现商品管理系统之向数据库中添加商品编写讲解
一、添加商品
添加商品的流程:
------欢迎来到商品管理系统------
输入以下命令进行操作:
C:添加商品D:根据编号删除商品DA:删除所有商品Ⅰ;根据商品编号查询商品信息FA:查询所有商品信息Q:退出
C
请输入增加商品的编号
10
请输入增加商品的名称
Benchi
请输入增加商品的名称
918187
添加商品成功
添加商品的业务流程图:
在添加商品之前,要对 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);
}
}
数据库中的数据如上图所示,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:退出
发现添加的商品信息已经添加成功,之后刷新数据库,重新查询数据:


