【SpringBoot整合MongoDB】

Linux宝塔安装MongoDB

  • 进入宝塔页面,找到软件商店,搜索mongoDB,点击安装

在这里插入图片描述

  • 修改Mongo DB配置文件,将ip换成0.0.0.0,之后重启mongo DB
    在这里插入图片描述
  • 配置php,在安装扩展中安装mongo db,重启php。
    在这里插入图片描述
  • 使用工具测试连接
    在这里插入图片描述

SpringBoot整合MongoDB

  • 引入依赖
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-mongodb</artifactId>
    </dependency>
  • 编写配置文件
  data:
    mongodb:
      host: xxx.xx.xxx.xx
      database: 数据库
      port: 27017
  • 编写实体类
@Document(collection = "article")
@Data
public class Article implements Serializable {
    
    
  @Id
  private String id;
  private String articleId;
  private String content;
  private Integer likeNum;
  @Indexed
  private String userName;
  private Date createTime;
  private Date updateTime;
}
  • Controller层的增删改查
@RestController
@RequestMapping("/idol/article")
@Api("发布文章")
public class ArticleController {
    
    
  @Resource
  private ArticleService articleService;


  @PostMapping("/getAll")
  @ApiOperation("查询全部")
  public Result getList(){
    
    
    List<Article> list = articleService.getList();
    return Result.success(list);
  }

  @PostMapping("/issueArticle")
  @ApiOperation("发布文章、动态")
  public Result issueArticle(@RequestBody Article article){
    
    
    Result res = articleService.issueArticle(article);
    return Result.success(res);
  }

  @GetMapping("/getArticleById")
  @ApiOperation("根据id查询")
  public Result getArticleById(@RequestParam String id){
    
    
    Article article = articleService.getArticleById(id);
    return Result.success(article);
  }

  @PostMapping("/getArticleByParam")
  @ApiOperation("根据条件查询")
  public Result getArticleByParam(@RequestBody ArticleParam articleParam){
    
    
    List<Article> articleList = articleService.getArticleByParam(articleParam);
    return Result.success(articleList);
  }

  @GetMapping("/deleteArticle")
  public Result deleteArticle(@RequestParam String id){
    
    
    Result result = articleService.deleteArticle(id);
    return Result.success(result);
  }
}
  • service接口
public interface ArticleService {
    
    
  List<Article> getList();

  Result issueArticle(Article article);

  Article getArticleById(String id);

  List<Article> getArticleByParam(ArticleParam articleParam);

  Result deleteArticle(String id);
}
  • serviceImpl,这里我用了两个方式,一个是直接继承MongoRepository,一个是使用MongoTemplate
@Service
@Slf4j
public class ArticleServiceImpl implements ArticleService {
    
    
  @Resource
  private  ArticleMapper articleMapper;
  @Resource
  private MongoTemplate mongoTemplate;

  @Override
  public List<Article> getList() {
    
    
    List<Article> all = articleMapper.findAll();
    return all;
  }

  @Override
  public Result issueArticle(Article article) {
    
    
    article.setCreateTime(new Date());
    article.setUpdateTime(new Date());
    Article insert = articleMapper.insert(article);
    return Result.success(insert);
  }

  @Override
  public Article getArticleById(String id) {
    
    
    Article article = mongoTemplate.findById(id, Article.class);
    return article;
  }

  @Override
  public List<Article> getArticleByParam(ArticleParam articleParam) {
    
    
    Query query = new Query();
    if(!StringUtils.isEmpty(articleParam.getKey())){
    
    
      query.addCriteria(Criteria.where("content").regex(articleParam.getKey()));
    }
    if (!StringUtils.isEmpty(articleParam.getUserName())){
    
    
      query.addCriteria(Criteria.where("userName").is(articleParam.getUserName()));
    }
    List<Article> articleList = mongoTemplate.find(query, Article.class);
    return articleList;
  }

  @Override
  public Result deleteArticle(String id) {
    
    
    DeleteResult result = mongoTemplate.remove(new Query(Criteria.where("_id").is(id)),Article.class,"article");
    return Result.success(result);
  }
}
  • 自定义mapper
@Mapper
public interface ArticleMapper extends MongoRepository<Article,String> {
    
    

}

结尾

这是第一次使用MongoDB,从搭建环境到写个小Demo吧,大佬和新手小白有建议或者问题,评论区理性发言。

猜你喜欢

转载自blog.csdn.net/zhang0305/article/details/125706321