Springboot整合Mongodb

一.服务器安装MongoDB(使用docker)

 

安装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就安装好了就可以使用了

二.springBoot整合mongodb实现简单增删改查

1.pom.xml

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

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 {
    //查询所有
List<Goods>findAll();
//新增数据
    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<Goods> 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() {
        List<Goods>all=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);
        }
    }
}

更新的方法就没测试了 大家可以自行测试一下就传入一个对象就行了

3.一个简单的springboot+mongodb增删改查整合就完成了

制作不易 如果帮助到你请点个赞吧

如果有问题或者纰漏请留言

感谢支持

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值