安装docker:https://cloud.tencent.com/developer/article/2061665
1.拉取镜像
docker pull mongo
2.创建容器
docker create --name mongodb -p 27017:27017 -v /data/mongodb:/data/db mongo
3.在常见 mongodb 时指定密码(也可以不设置)
docker run --name mongo -p 27017:27017 -v mongodata:/data/db -e
MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=admin -d
mongo
4.启动容器
docker start mongodb
5.进入容器
docker exec -it mongodb /bin/bash
现在MongoDB就安装好了就可以使用了
1.pom.xml
org.springframework.boot
spring-boot-starter-data-mongodb
org.projectlombok
lombok
true
org.springframework.boot
spring-boot-starter-test
test
2.yml配置
*.无密码
spring:
data:
mongodb:
uri: mongodb://服务器IP:端口/数据库名
*.有密码
spring:
data:
mongodb:
uri: mongodb://用户名:密码@服务器IP:端口/数据库名
# 上方为明确指定某个数据的用户进行连接
# 也可以使用admin 数据库中的用户进行连接 统一到admin 数据库进行认证
# admin 用户认证 url 写法: mongodb://账户:密码@服务器ip:端口/数据库名?authSource=admin&authMechanism=SCRAM-SHA-1
3.实体类
//指定文档得集合(对应的要操作的表)
@Document(collection = "Goods")
//生成getSet方法
@Data
//生成有参构造
@AllArgsConstructor
//生成无参构造
@NoArgsConstructor
public class Goods {
@Id
private String _id;
@Field(value = "goodsName")
private String goodsName;
@Field(value = "goodsPrice")
private Double goodsPrice;
@Field(value = "goodsNum")
private String goodsNum;
@Field
private Date createDate;
public Goods(String goodsName, Double goodsPrice, String goodsNum, Date createDate) {
this.goodsName = goodsName;
this.goodsPrice = goodsPrice;
this.goodsNum = goodsNum;
this.createDate = createDate;
}
}
4.dao层(service)
public interface GoodsDao {
//查询所有
ListfindAll();
//新增数据
void insertOneGoods(Goods goods);
//删除数据
void deleteOne(String id);
//根据名字得到id
void deleteOneName(String name);
//根据名字查询
Goods finByName(String name);
//跟据id查询
Goods findById(String id);
//更新数据
int update(Goods goods);
}
5.dao的实现类(serviceimpl)
操作之前需要将MongoTemplate交由给spring容器进行管理
这里用的是 @Resource
@Repository
public class GoodsDaoImpl implements GoodsDao {
@Resource
private MongoTemplate mongoTemplate;
@Override
public List findAll() {
return mongoTemplate.findAll(Goods.class);
}
@Override
public void insertOneGoods(Goods goods) {
mongoTemplate.insert(goods);
}
@Override
public void deleteOne(String id) {
System.out.println(id);
//条件构造器
Criteria criteria=new Criteria();
criteria.and("_id").is(id);
Query query=new Query(criteria);
mongoTemplate.remove(query,Goods.class);
}
@Override
public void deleteOneName(String name) {
System.out.println(name);
//条件构造器
Criteria criteria=new Criteria();
criteria.and("goodsName").is(name);
Query query=new Query(criteria);
mongoTemplate.remove(query,Goods.class);
}
@Override
public Goods finByName(String name) {
System.out.println(name);
//条件构造器
Criteria criteria=new Criteria();
criteria.and("goodsName").is(name);
Query query=new Query(criteria);
return mongoTemplate.findOne(query,Goods.class);
}
@Override
public Goods findById(String id) {
return mongoTemplate.findById(id,Goods.class);
}
@Override
public int update(Goods goods) {
String ID=finByName(goods.getGoodsName()).get_id();
Criteria criteria=new Criteria();
criteria.and("_id").is(ID);
Query query=new Query(criteria);
Update update=new Update();
update.set("goodsName",goods.getGoodsName());
update.set("goodsPrice",goods.getGoodsPrice());
update.set("goodsNum",goods.getGoodsNum());
update.set("createDate",goods.getCreateDate());
UpdateResult updateResult=mongoTemplate.upsert(query,update,Goods.class);
return (int)updateResult.getMatchedCount();
}
}
6.现在就可以写接口测试了 我们直接简单一点写个测试类
@SpringBootTest
class SpringbootMongodbApplicationTests {
@Resource
private GoodsDaoImpl goodsDao;
@Test
void contextLoads() {
}
//查询所有
@Test
void testFindAll() {
Listall=goodsDao.findAll();
System.out.println(all.toString());
}
//删除
@Test
void testDelteOne() {
//根据姓名查询出id 然后作为条件
Goods good = goodsDao.finByName("火影电脑");
System.out.println(good.toString());
goodsDao.deleteOne(good.get_id());
}
//新增
@Test
void testInsertGoods() {
Goods goods=new Goods("联想电脑",7000.00,"200",new Date());
System.out.println(goods);
goodsDao.insertOneGoods(goods);
}
@Test
void testfindById() {
//根据姓名查询出id 然后作为条件
try {
Goods good = goodsDao.finByName("火影电脑");
System.out.println(good.toString());
goodsDao.findById(good.get_id());
}catch (Exception e){
System.out.println("商品不存在"+e);
}
}
}
更新的方法就没测试了 大家可以自行测试一下就传入一个对象就行了
制作不易 如果帮助到你请点个赞吧
如果有问题或者纰漏请留言
感谢支持