IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> springboot+mongodb整合+事务 -> 正文阅读

[Java知识库]springboot+mongodb整合+事务

springboot 是我们java开发界的老牌开发框架,csdn上有一些基础的增删改查的教程详细但是不是很全,我自己再整合boot+mongodb的时候发现有些方法已经过时,或者是即将废弃的方法。
特总结如下

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

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </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>

以上是我们boot+mongo需要引入的全部依赖。



package com.mongodbtest.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import org.bson.types.ObjectId;

@Data
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class Teacher {

    private ObjectId id;


    private  String  name;
}

以上部分是我的测试实体类,


```java
package com.mongodbtest.config;


import com.mongodbtest.entity.Teacher;
import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.stereotype.Component;

@Component
public interface TeacherRepository extends MongoRepository<Teacher, String> {
}

以上是我的mongodb操作类,

另外,

```java

```java

```java
package com.mongodbtest.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import org.springframework.data.mongodb.MongoDatabaseFactory;
import org.springframework.data.mongodb.MongoDbFactory;
import org.springframework.data.mongodb.MongoTransactionManager;



@Configuration
public class Config  {

    @Bean
    MongoTransactionManager transactionManager(MongoDatabaseFactory factory){
        return new MongoTransactionManager(factory);
    }



}






最主要的是自己实现mongodb事务的时候有很多网络上的config已经过时MongoFactory  你用这个去配置的时候会提示找不到type  bean MongoFactory   这里是自己扒了源码看到的东西而且mongodb 官网也没有,这里是天坑(注意!!!!!!!!)

```java
package com.mongodbtest.entity;


import com.mongodbtest.config.TeacherRepository;
import com.mongodbtest.entity.Teacher;
import com.mongodbtest.service.TeacherService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
import org.springframework.data.mongodb.core.MongoTemplate;
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;

@RestController
@RequestMapping("teacher")
public class TeacherController {

    @Autowired
    MongoTemplate   mongoTemplate;
    @Autowired
    TeacherService teacherService;


    @PostMapping("teacher")
    public  Teacher   saveTeacher(@RequestBody Teacher teacher ){

        return teacherService.saveTeacherTemp(teacher);
    }
    @PostMapping("teacher001")
    public  Teacher   saveTeacher001(@RequestBody Teacher teacher ){

        return teacherService.saveTeacherTemp001(teacher);
    }




}

以上是我的controller 这里没啥看的,会的都会。

    @Transactional
    public Teacher  saveTeacherTemp001(Teacher teacher){

        Teacher save = teacherRepository.save(teacher);

       //这里是我故意想回滚的
        int io= 5/0;
        System.out.println(io);
        return save;
    }

这里的@Transactional 加上去就可以同时要记得开启事务 否则你的事务还是不会生效(顺便吐槽一下mongodb api开发的是真的麻烦)
在这里插入图片描述
本来是学习quarkus的单文档事务的,没想到遇到山路十八弯,然后自己搭建一个mongdb 集群又整合了一下boot ,结论是boot 能很好的支持mongodb的事务,quarkus 就不是很好的支持!
希望大家的代码都没有bug;嘿嘿!

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-05-11 16:17:11  更:2022-05-11 16:21:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 23:38:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码