栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spirngboot+Spring Data mongodb(一) 环境搭建

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spirngboot+Spring Data mongodb(一) 环境搭建

引入Maven相关依赖

        org.springframework.boot
        spring-boot-starter-parent
        2.3.8.RELEASE
    

    
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.springframework.boot
            spring-boot-starter-data-mongodb
        
        
            org.projectlombok
            lombok
            true
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
        
        
            com.alibaba
            fastjson
            1.2.75
        
    
添加application.yaml配置文件
server:
  port: 8081

spring:
  data:
    mongodb:
      host: 192.168.70.149
      port: 27017
      database: dev
      ## 开启自动驼峰命名,低于 @Feild优先级
      field-naming-strategy: org.springframework.data.mapping.model.SnakeCaseFieldNamingStrategy

## 打印nosql日志
logging:
  level:
    org:
      springframework:
        data:
          mongodb:
            core: debug

添加java配置类

@Configuration
public class MongoConfig {
    
    @Bean
    public MappingMongoConverter mappingMongoConverter(MongoDatabaseFactory mongoDbFactory, MongoMappingContext mongoMappingContext) {
        DbRefResolver dbRefResolver = new DefaultDbRefResolver(mongoDbFactory);
        MappingMongoConverter converter = new MappingMongoConverter(dbRefResolver, mongoMappingContext);
        converter.setTypeMapper(new DefaultMongoTypeMapper(null));
        return converter;
    }
新建实体对象

import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;
import org.springframework.data.mongodb.core.mapping.document;
import org.springframework.data.mongodb.core.mapping.Field;

import java.time.LocalDateTime;
import java.util.List;

@document("bill")
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
public class BillDetail {

    private String id;

    private String billNo;

    private String province;

    private String city;

    private String county;

    private LocalDateTime createdTime;

    private Integer price;

    private String username;

    private String sex;

    @Field("productInfos")
    private List productInfos;
}

注意,实体对象的基本类型 一定要用包装类型,用Integer 而 不用Int,原因Integer默认值为Null,Int默认值0,新增对象时若不显式复制,int类型price会默认插入0,而Integer类型时,不会插入。

验证代码:
        BillDetail billDetail = new BillDetail();
        String suffix = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSSSS"));
        billDetail.setBillNo("0304"+ suffix);
        billDetail.setCity("深圳市");
        billDetail.setProvince("广东省");
        BillDetail insert = mongoTemplate.insert(billDetail);
        String id = insert.getId();
        log.info("插入文档返回id:{}",id);

 当price类型为Int时,本次执行效果

{ _id: ObjectId("616e85fd4d87d14b28004360"),
  bill_no: '03042021101916465376100',
  province: '广东省',
  city: '深圳市',
  price: 0,
  sex: 0,
  _class: 'com.vm.data.entity.BillDetail' }

当price类型为Int时,本次执行效果

{ _id: ObjectId("616e8eafb592682589d63af8"),
  bill_no: '03042021101917235899000',
  province: '广东省',
  city: '深圳市',
  _class: 'com.vm.data.entity.BillDetail' }
配置文件和配置类效果解释 打印NoSql日志:

 去掉_class字段和驼峰命名

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/336515.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号