spring boot 中使用mongoDB (个人学习记录)

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: spring boot 中使用mongoDB (个人学习记录)

1.先引入pom

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


2.配置文件application.yml

spring:
  data:
    mongodb:
      uri: mongodb://IP*******:27017/库名


3.创建entity实体类

import lombok.Data;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field;
import java.io.Serializable;
@Data
@Document(collection = "user")
public class User implements Serializable {
    private static final Long serialVersionUID = 1l;
    @Field("id")
    private String id;
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPhone() {
        return phone;
    }
    public void setPhone(String phone) {
        this.phone = phone;
    }
    public String getAdd() {
        return add;
    }
    public void setAdd(String add) {
        this.add = add;
    }
    @Field("name")
    private String name;
    @Field("phone")
    private String phone;
    @Field("add")
    private String add;
}


4.service层

import java.util.HashMap;
public interface IUserService {
    HashMap<Object, Object> queryList();
    User findUserByUserName(String name);
    long updateUser(User user);
    boolean deleteUserById(String id);
    String saveUser(User user);
}


5.实现impl

import com.mongodb.client.result.UpdateResult;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Service;
import cn.javaguide.springbootkafka01sendobjects.service.IUserService;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
@Service
public class UserServiceImpl implements IUserService {
    private static Logger logger = LoggerFactory.getLogger(UserContrller.class);
    @Resource
    private MongoTemplate mongoTemplate;
    /**
     * 时间 2022年3月1日
     * 查询user表所有集合
     *
     * @return
     */
    @Override
    public HashMap<Object, Object> queryList() {
        HashMap<Object, Object> map = new HashMap<>();
        Query query = new Query();
        List<User> all = mongoTemplate.findAll(User.class);
//        List<AlarmRtTime> all1 = mongoTemplate.findAll(AlarmRtTime.class);
        long count = mongoTemplate.count(query, User.class);
//        boolean empty = all.isEmpty();
//        Assert.isTrue(empty==false,"***********************查询信息为空***********************");
//        Assert.isNull(all,"***********************查询信息为空***********************");
        User user = new User();
        if (all.isEmpty()) {
//        user.setId("001");
//        user.setName("tom");
//        user.setPhone("1234568910");
            System.out.println("***********************查询信息为空***********************");
//            all.add(user);
        }
        map.put("user table info :", all);
        map.put("user table count :", count);
//        map.put("user table AlarmRtTime :", all1);
        return map;
    }
    @Override
    public String saveUser(User user) {
        mongoTemplate.save(user);
        return "添加成功";
    }
    /**
     * 根据name查询mongodb信息
     * date 2022年3月1日 15点19分
     *
     * @param name
     * @return
     */
    @Override
    public User findUserByUserName(String name) {
        Query query = new Query(Criteria.where("name").is(name));
        User user = mongoTemplate.findOne(query, User.class);
//        Assert.isNull(user,"***********************查询信息为空***********************");
        return user;
    }
    /**
     * 根据id,修改用户信息
     * 时间 2022年3月1日
     *
     * @param user
     */
    @Override
    public long updateUser(User user) {
        System.out.println(user);
        Query query = new Query(Criteria.where("id").is(user.getId()));
        Update update = new Update().set("name", user.getName()).set("phone", user.getPhone()).set("add", user.getAdd());
        //更新查询返回结果集的第一条
        UpdateResult result = mongoTemplate.updateFirst(query, update, User.class);
        //更新查询返回结果集的所有
        // mongoTemplate.updateMulti(query,update,UserEntity.class);
        if (result != null) {
            return result.getMatchedCount();
        } else {
            return 0;
        }
    }
    /**
     * 根据id删除对象
     * 时间 2022年3月1日
     * @param id
     */
    @Override
    public boolean deleteUserById(String id) {
        Query query=new Query(Criteria.where("id").is(id));
        User user = mongoTemplate.findOne(query, User.class);
        System.out.println(user);
//        Assert.notNull(user,"找不到对应id数据");
        if (user==null){
            System.out.println("找不到对应id数据");
            return false;
        }
        mongoTemplate.remove(query,User.class);
        return true;
    }
}


6.接口controller

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import cn.javaguide.springbootkafka01sendobjects.service.IUserService;
import javax.annotation.Resource;
import java.util.HashMap;
@RestController
@RequestMapping("/user")
public class UserContrller {
    private static Logger logger = LoggerFactory.getLogger(UserContrller.class);
    @Resource
    private IUserService userService;
    @PostMapping("/getInfo")
    private HashMap<Object, Object> getAllInfo() {
        return userService.queryList();
    }
    @PostMapping("/findUserByUserName")
    private User findUserByUserName(String name) {
        return userService.findUserByUserName(name);
    }
    @PostMapping("/updateUser")
    private long updateUser(@RequestBody User user) {
        return userService.updateUser(user);
    }
    @PostMapping("/deleteUserById")
    private boolean deleteUserById(String id) {
        return userService.deleteUserById(id);
    }
    @PostMapping("/saveUser")
    private String saveUser(@RequestBody User user) {
        return userService.saveUser(user);
    }
}


7.接口测试


--添加

image.png


--查询全部

image.png

image.png


****测试不一一截图了

建议配置下账号密码,开放性数据库容易被攻击,数据不安全。


相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。 &nbsp; 相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
2月前
|
NoSQL Java MongoDB
SpringBoot中MongoDB的那些高级用法
本文探讨了在Spring Boot项目中使用MongoDB的多种方式及其高级用法。MongoDB作为一种NoSQL数据库,在某些场景下相较于SQL数据库有着独特的优势。文中详细介绍了在Spring Boot中使用MongoDB的三种主要方式:直接使用官方SDK、使用Spring JPA以及使用MongoTemplate,并对比分析了它们之间的差异。此外,文章深入讲解了Spring Data MongoDB提供的各种注解(如@Id, @Document, @Field等)以简化操作流程,并探讨了MongoTemplate监听器的应用,如设置主键值、记录日志等。
|
2月前
|
小程序 前端开发 Java
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
JavaDog Chat v1.0.0 是一款基于 SpringBoot、MybatisPlus 和 uniapp 的简易聊天软件,兼容 H5、小程序和 APP,提供丰富的注释和简洁代码,适合初学者。主要功能包括登录注册、消息发送、好友管理及群组交流。
60 0
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
|
2月前
|
缓存 前端开发 JavaScript
前后端分离 SpringBoot+Vue商城买卖系统通杀版本。大家可以参考学习一下
这篇文章介绍了一个使用SpringBoot+Vue开发的前后端分离商城系统,包括技术架构、开发环境、实现的功能以及项目截图,并展示了普通用户和商家端的功能界面。
前后端分离 SpringBoot+Vue商城买卖系统通杀版本。大家可以参考学习一下
|
3月前
|
Java 数据格式 微服务
2024最新首发,全网最全 Spring Boot 学习宝典(附思维导图)
📚 《滚雪球学Spring Boot》是由CSDN博主bug菌创作的全面Spring Boot教程。作者是全栈开发专家,在多个技术社区如CSDN、掘金、InfoQ、51CTO等担任博客专家,并拥有超过20万的全网粉丝。该教程分为入门篇和进阶篇,每篇包含详细的教学步骤,涵盖Spring Boot的基础和高级主题。
190 4
2024最新首发,全网最全 Spring Boot 学习宝典(附思维导图)
|
2月前
|
NoSQL Java MongoDB
SpringBoot中MongoDB的那些骚操作用法
MongoDB作为一种NoSQL数据库,在不需要传统SQL数据库的表格结构的情况下,提供了灵活的数据存储方案。在Spring Boot中可以通过官方SDK、Spring JPA或MongoTemplate等方式集成MongoDB。文章重点介绍了Spring Data MongoDB提供的注解功能,例如`@Id`、`@Document`和`@Field`等,这些注解简化了Java对象到MongoDB文档的映射。此外,文中还讨论了MongoTemplate监听器的使用,包括设置主键值和日志记录等高级特性。
144 0
SpringBoot中MongoDB的那些骚操作用法
|
3月前
|
安全 Java 数据库
三更草堂 Spring Security学习总结(思路整理)
Spring Security学习总结(思路整理)
|
2月前
|
设计模式 Java 程序员
学习 Spring 源码的意义是什么呢?
研究Spring源码能深化框架理解,提升代码分析与设计能力,助您掌握设计模式及最佳实践,增强解决问题的效率,促进职业生涯发展,并激发技术热情。选择稳定版本,从核心模块开始,结合实际项目并参与社区,让学习之旅既充实又具乐趣。
|
3月前
|
NoSQL Java API
Spring Data MongoDB 使用
Spring Data MongoDB 使用
112 1
|
2月前
|
NoSQL Java MongoDB
MongoDB 读写分离——SpringBoot读写分离
MongoDB 读写分离——SpringBoot读写分离
60 0
|
3月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的诗词学习系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的诗词学习系统的详细设计和实现(源码+lw+部署文档+讲解等)
下一篇
无影云桌面