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
相关文章
|
20天前
|
前端开发 Java 数据库
SpringBoot学习
【10月更文挑战第7天】Spring学习
33 9
|
21天前
|
XML Java 数据格式
Spring学习
【10月更文挑战第6天】Spring学习
19 1
|
25天前
|
Java 测试技术 开发者
springboot学习四:Spring Boot profile多环境配置、devtools热部署
这篇文章主要介绍了如何在Spring Boot中进行多环境配置以及如何整合DevTools实现热部署,以提高开发效率。
51 2
|
25天前
|
前端开发 Java 程序员
springboot 学习十五:Spring Boot 优雅的集成Swagger2、Knife4j
这篇文章是关于如何在Spring Boot项目中集成Swagger2和Knife4j来生成和美化API接口文档的详细教程。
45 1
|
25天前
|
Java API Spring
springboot学习七:Spring Boot2.x 拦截器基础入门&实战项目场景实现
这篇文章是关于Spring Boot 2.x中拦截器的入门教程和实战项目场景实现的详细指南。
17 0
springboot学习七:Spring Boot2.x 拦截器基础入门&实战项目场景实现
|
25天前
|
Java API Spring
springboot学习六:Spring Boot2.x 过滤器基础入门&实战项目场景实现
这篇文章是关于Spring Boot 2.x中过滤器的基础知识和实战项目应用的教程。
21 0
springboot学习六:Spring Boot2.x 过滤器基础入门&实战项目场景实现
|
25天前
|
Java 关系型数据库 MySQL
springboot学习五:springboot整合Mybatis 连接 mysql数据库
这篇文章是关于如何使用Spring Boot整合MyBatis来连接MySQL数据库,并进行基本的增删改查操作的教程。
40 0
springboot学习五:springboot整合Mybatis 连接 mysql数据库
|
25天前
|
Java 关系型数据库 MySQL
springboot学习四:springboot链接mysql数据库,使用JdbcTemplate 操作mysql
这篇文章是关于如何使用Spring Boot框架通过JdbcTemplate操作MySQL数据库的教程。
19 0
springboot学习四:springboot链接mysql数据库,使用JdbcTemplate 操作mysql
|
25天前
|
Java 测试技术 Spring
springboot学习三:Spring Boot 配置文件语法、静态工具类读取配置文件、静态工具类读取配置文件
这篇文章介绍了Spring Boot中配置文件的语法、如何读取配置文件以及如何通过静态工具类读取配置文件。
33 0
springboot学习三:Spring Boot 配置文件语法、静态工具类读取配置文件、静态工具类读取配置文件
|
25天前
|
Java Spring
springboot 学习十一:Spring Boot 优雅的集成 Lombok
这篇文章是关于如何在Spring Boot项目中集成Lombok,以简化JavaBean的编写,避免冗余代码,并提供了相关的配置步骤和常用注解的介绍。
75 0