首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >springboot整合MongoDB(简单demo实现包含注意点及踩坑)

springboot整合MongoDB(简单demo实现包含注意点及踩坑)

作者头像
一只牛博
发布2025-05-31 09:21:03
发布2025-05-31 09:21:03
54000
代码可运行
举报
运行总次数:0
代码可运行

1️⃣:加maven坐标

代码语言:javascript
代码运行次数:0
运行
复制
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>

2️⃣:配置类实现

代码语言:javascript
代码运行次数:0
运行
复制
package com.todoitbo.tallybookdasmart.config;

import lombok.NonNull;
import org.springframework.context.ApplicationListener;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.convert.DefaultMongoTypeMapper;
import org.springframework.data.mongodb.core.convert.MappingMongoConverter;
import org.springframework.data.mongodb.core.convert.MongoConverter;

import javax.annotation.Resource;

/**
 * @author xiaobo
 * @date 2022/12/5
 * @info 此类若不加,那么插入的一行会默认添加一个_class字段来存储实体类类型 如(com.example.demo.entity.Student)
 */
@Configuration
public class MongoDbListener implements ApplicationListener<ContextRefreshedEvent> {

    @Resource
    MongoTemplate mongoTemplate;

    private static final String TYPEKEY = "_class";

    @Override
    public void onApplicationEvent(@NonNull ContextRefreshedEvent contextRefreshedEvent) {
        MongoConverter converter = mongoTemplate.getConverter();
        if (converter.getTypeMapper().isTypeKey(TYPEKEY)) {
            ((MappingMongoConverter) converter).setTypeMapper(new DefaultMongoTypeMapper(null));
        }
    }
}

3️⃣:实体类

代码语言:javascript
代码运行次数:0
运行
复制
package com.todoitbo.tallybookdasmart.entity;

import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

import java.io.Serializable;

/**
 * @author xiaobo
 * @date 2022/12/5
 */
@Data
@Document(collection = "sys_exception_log")
public class SysExceptionLog implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    /*** 自定义mongo主键 加此注解可自定义主键类型以及自定义自增规则
     *  若不加 插入数据数会默认生成 ObjectId 类型的_id 字段
     *  org.springframework.data.annotation.Id 包下
     *  mongo库主键字段还是为_id (本文实体类中字段为为id,意思查询字段为_id,但查询结果_id会映射到实体对象id字段中)
     */
    @Id
    private Long id;

    /**
     * 操作时间
     */
    private Long createTime;
}

4️⃣:service实现

代码语言:javascript
代码运行次数:0
运行
复制
package com.todoitbo.tallybookdasmart.service.impl;

import com.todoitbo.tallybookdasmart.entity.SysExceptionLog;
import com.todoitbo.tallybookdasmart.service.ISysExceptionLogService;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

/**
 * @author xiaobo
 * @date 2022/12/5
 */
@Service
public class SysExceptionLogServiceImpl implements ISysExceptionLogService {

    @Resource
    private MongoTemplate mongoTemplate;

    @Override
    public void insertSysExceptionLog(SysExceptionLog sysExceptionLog){
        mongoTemplate.insert(sysExceptionLog);
    }
}

🔚:简单的实现到此结束

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-05-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档