首页 > 数据库 >Spring boot data mongodb入门

Spring boot data mongodb入门

时间:2023-09-17 16:13:03浏览次数:82  
标签:name Spring org boot springframework mongodb import data

在Spring Boot中使用Mongodb,首先导入依赖库:

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

连接配置

## 阿里云副本实例连接 # spring.data.mongodb.uri=mongodb://账号:密码@dds-primary-pub.mongodb.rds.aliyuncs.com:3717,dds-secondary-pub.mongodb.rds.aliyuncs.com:3717/默认数据库?replicaSet=实例高可用连接地址的唯一标识ID # spring.data.mongodb.database=默认数据库 # 本机单节点实例
spring.data.mongodb.uri=mongodb://localhost:27017/默认数据库 logging.level.root=info # 打印SQL logging.level.org.springframework.data.mongodb.core.MongoTemplate=DEBUG   实体定义:
import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field;

import java.io.Serial;
import java.io.Serializable;
import java.util.Date;

@Data
@Document("note")
public class Note implements Serializable {

@Serial
private static final long serialVersionUID = 5975169180210838347L;
// 主键自动生成
@Id
private String id;
    private String name;
    @Field("type")
private int type;

@Field("created_at")
private Date createdAt;

}

Repository定义:
import org.springframework.data.mongodb.repository.MongoRepository; import org.springframework.data.mongodb.repository.Query;
import java.util.Date; import java.util.List;
public interface NoteRepository extends MongoRepository<Note, String> {     // sort 1:asc,-1:desc     // 注意引号的使用,否则会引起查询不到数据的问题     @Query(value = "{'created_at':{$gte:?0,$lte:?1}}", sort = "{ created_at : -1 }")     List<Note> findByCreateDTime(Date startDate, Date endDate);
    @Query(value = "{'name':{$regex:?0}}")     List<Note> findByNameRegex(String name);
    @Query(value = "{'name':?0}")     List<Note> findByName(String name);     public long count(); }   入门整理,Service层就省略了,放到Controller import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.format.annotation.DateTimeFormat; import org.springframework.web.bind.annotation.*;
import java.time.LocalDateTime; import java.time.ZoneOffset; import java.util.Date; import java.util.List;
import static java.lang.String.format;
@RestController @RequestMapping("/note") @Slf4j public class NoteController {
    @Autowired     private NoteRepository noteRepository;
    @Autowired     private MongoTemplate mongoTemplate;
    // http://localhost:8080/note/list     @GetMapping("/list")     public Page<Note> getPageList() {         return noteRepository.findAll(Pageable.ofSize(10));     }
    // http://localhost:8080/note/id/64fa7d50c96b8b64535a04f9     @GetMapping("/id/{id}")     public Note getListById(@PathVariable String id) {         return noteRepository.findById(id).orElseThrow(RuntimeException::new);     }
    // http://localhost:8080/note/date/start/2018-11-07     @GetMapping("/date/start/{date}")     public List<Note> getListByCreatedTime(@PathVariable @DateTimeFormat(pattern = "yyyy-MM-dd") Date date) {         // 复杂逻辑,建议使用这个方法         Query query = new Query();         query.addCriteria(Criteria.where("created_at").gte(date));         List<Note> users = mongoTemplate.find(query, Note.class);         return users;     }
    @GetMapping("/date/range/{start}/{end}")     public List<Note> getListByCreatedTimeUsQuery(@PathVariable @DateTimeFormat(pattern = "yyyy-MM-dd") Date start, @PathVariable(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") Date end) {         if (end == null) {             end = new Date();         }         return noteRepository.findByCreateDTime(start, end);     }
    // http://localhost:8080/note/name/start/甲     @GetMapping("/name/start/{name}")     public List<Note> getListByStartName(@PathVariable String name) {         return noteRepository.findByNameRegex(format("^%s", name));     }
    // http://localhost:8080/note/name/end/

标签:name,Spring,org,boot,springframework,mongodb,import,data
From: https://www.cnblogs.com/terry-cc/p/17708967.html

相关文章

  • SpringBoot Redis使用AOP防止重复提交
    自定义注解importjava.lang.annotation.ElementType;importjava.lang.annotation.Retention;importjava.lang.annotation.RetentionPolicy;importjava.lang.annotation.Target;/***@ProjectName:gswr-ets-cloud*@ClassName:*@Description:防止重复提交的自定义......
  • Spring Boot 实现各种参数校验,非常实用
    本文会详细介绍SpringValidation各种场景下的最佳实践及其实现原理,死磕到底!简单使用JavaAPI规范(JSR303)定义了Bean校验的标准validation-api,但没有提供实现。hibernatevalidation是对这个规范的实现,并增加了校验注解如@Email、@Length等。SpringValidation是对hiberna......
  • springcloud 集成rabbitmq
    以下是在SpringCloud中使用RabbitMQ的基本步骤:引入依赖:在pom.xml文件中引入以下依赖:<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bus-amqp</artifactId></dependency><depe......
  • 快速搭建SpringBoot3.x项目
    写在前面上一小节中我们从0到1使用Vite搭建了一个Vue3项目,并集成了ElementPlus实现了一个简单的增删改查页面。这一篇中我们将使用IDEA快速搭建一个SpringBoot3.x的项目。一、创建项目1、File->new->project2、选择“SpringInitializr”,点击next;3、选择springboot版......
  • 利用Spring随时随地获得Request和Session
    利用Spring随时随地获得Request和Session一、准备工作:在web.xml中添加  1.<listener>2.<listener-class>3.org.springframework.web.context.request.RequestContextListener4.</listener-class>5.</listener> 二......
  • SpringBoot用线程池ThreadPoolTaskExecutor异步处理百万级数据
    一、背景:    利用ThreadPoolTaskExecutor多线程异步批量插入,提高百万级数据插入效率。ThreadPoolTaskExecutor是对ThreadPoolExecutor进行了封装处理。ThreadPoolTaskExecutor是ThreadPoolExecutor的封装,所以,性能更加优秀,推荐ThreadPoolTaskExecutor。二、具体细节:2.1、配置app......
  • springbean生命周期
    B站连接https://www.bilibili.com/video/BV12a411r75X/?spm_id_from=333.337.search-card.all.click&vd_source=f0f7ef36d638628b3ab7a240c872017dSpringBean的生命周期大致上分为五个阶段:创建前准备:Bean在开始加载之前要从上下文和一些配置中去解析并且查找Bean有关扩展的实现,......
  • spring frame项目启动过程中的踩坑记录
    在springframework项目的代码拉下来到了本地之后,创建一个testdemo,具体代码如下:importorg.spring.*;publicclassDemoTest{ publicstaticvoidmain(String[]args){ ApplicationContextcontext=newApplicationContext("applicationContext.xml"); Useruser=c......
  • springboot+html使用sql语句能够在控制台输出相关数据信息list,但是输出的list=null(未
    问题描述具体来说,就是,连接上数据库之后,发现查询的sql语句能够正常在控制台输出数据,但是将sql语句的查询结果放到list里面,在控制台输出的list=[null];真的崩溃了!!!之前从来没有遇到过这种情况;尝试了网上的各种方法,也都解决不了,麻木ing~求解!......
  • 修改经过Spring Gateway的表单中的Json数据
    背景使用SpringCloudGateway作为网关时有时候一个请求是既包含excel又包含json的表单数据,出于各种层面考虑网关需要获取并更新其中的json数据依赖SpringBoot版本:2.7.15Hutool:5.8.21Java:11实现逻辑实现分为2个部分使用上文提到的ModifyRequestBodyGatewayFilterF......