zoukankan      html  css  js  c++  java
  • MongoDB与SpringBoot整合(支持事务)

    1.创建SpringBoot工程,选择 Web、MonogDB 依赖,pom如下:

        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.1.4.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
    
        ......
    
        <dependencies>
            <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>
    
            ......
    
        </dependencies>
    
        ......

    2.配置yml文件

    # 服务端口号
    server:
      port: 8081
    
    spring:
      # 服务名称
      application:
        name: test-springboot-mongo
      #数据库
      data:
        mongodb:
          uri: mongodb://localhost:27017/testmongo

    3.创建配置类,开启事务

    @Configuration
    public class TransactionConfig {
    
        @Bean
        MongoTransactionManager transactionManager(MongoDbFactory factory){
            return new MongoTransactionManager(factory);
        }
    
    }

    4.创建Entity实体类

    public class BaseEntity {
    
        @Id
        private String id;
    
        public String getId() {
            return id;
        }
    
        public void setId(String id) {
            this.id = id;
        }
    }
    @Document
    public class User extends BaseEntity {
    
        private String userName;
        private String passWord;
        @DBRef
        private UserInfo userInfo;
    
        public String getUserName() {
            return userName;
        }
    
        public void setUserName(String userName) {
            this.userName = userName;
        }
    
        public String getPassWord() {
            return passWord;
        }
    
        public void setPassWord(String passWord) {
            this.passWord = passWord;
        }
    
        public UserInfo getUserInfo() {
            return userInfo;
        }
    
        public void setUserInfo(UserInfo userInfo) {
            this.userInfo = userInfo;
        }
    }
    @Document
    public class UserInfo extends BaseEntity {
    
        private int age;
        private String nickName;
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        public String getNickName() {
            return nickName;
        }
    
        public void setNickName(String nickName) {
            this.nickName = nickName;
        }
    }

    5.创建service

    @Service
    public class UserService {
    
        @Resource
        MongoTemplate mongotemplate;
    
        public List<User> getAllUser(){
            return mongotemplate.findAll(User.class);
        }
    
        @Transactional
        public boolean addUser(User user, UserInfo userInfo){
            user.setUserInfo(userInfo);
            mongotemplate.save(userInfo);
    //        int a = 1/0;    //事务测试代码
            mongotemplate.save(user);
            return true;
        }
    
    }

    6.创建controller

    @RestController
    public class UserController {
    
        @Resource
        UserService userService;
    
        @RequestMapping(value = "/getAllUser")
        public List<User> getAllUser(){
            return userService.getAllUser();
        }
    
        @RequestMapping(value = "/addUser")
        public boolean addUser(User user, UserInfo userInfo){
            userService.addUser(user, userInfo);
            return true;
        }
    
    }

    7.运行 SpringBootApplication 启动服务,在浏览器中输入 " http://localhost:8081/addUser?userName=z3&passWord=123&age=12&nickName=zhangsan " 测试

    @SpringBootApplication
    public class TestspringmongoApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(TestspringmongoApplication.class, args);
        }
    
    }

    8.注:以上为MongoTemplate方式,MongoTemplate和MongoRepository方式都与Spring整合SpringDataMongoDB相同

  • 相关阅读:
    Unix domain sockets
    python异常处理
    php注册登录源代码
    div,css命名规范!
    html、css和js注释的规范用法
    PHPstrom的Disable Power Save Mode
    开通了博客园
    O(1)时间删除链表中的节点 13
    打印1到最大的n位数 12
    自己实现一个数的整数次方 11
  • 原文地址:https://www.cnblogs.com/vettel0329/p/10778931.html
Copyright © 2011-2022 走看看