当前位置: 首页 > news >正文

springboot操作MongoDB

  1. 启动类及配置

import com.mongodb.client.MongoClient;

import com.mongodb.client.MongoClients;

import com.mongodb.client.internal.MongoClientImpl;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.context.annotation.Bean;

import org.springframework.data.mongodb.MongoDatabaseFactory;

import org.springframework.data.mongodb.MongoTransactionManager;

import org.springframework.data.mongodb.core.MongoTemplate;

import org.springframework.data.mongodb.core.SimpleMongoClientDatabaseFactory;

import org.springframework.transaction.annotation.EnableTransactionManagement;

@SpringBootApplication

// 开始事务

@EnableTransactionManagement

public class DemoApplication {

public static void main(String[] args) {

SpringApplication.run(DemoApplication.class, args);

}

@Bean

public MongoTemplate mongoTemplate() {

return new MongoTemplate(mongoDatabaseFactory());

}

@Bean

MongoTransactionManager transactionManager(MongoDatabaseFactory mongoDbFactory){

return new MongoTransactionManager(mongoDbFactory);

}

@Bean

public MongoClient mongoClient() {

// 使用更高级的配置MongoClientSettings(请注意,这些不是建议值)

// MongoClientSettings settings = MongoClientSettings.builder()

// .applyConnectionString(new ConnectionString("mongodb://127.0.0.1:37017/db_name"))

// .applyToConnectionPoolSettings(builder -> ConnectionPoolSettings.builder()

// .maxConnectionLifeTime(10, TimeUnit.SECONDS)

// .maxWaitTime(15, TimeUnit.SECONDS)

// .maxConnectionIdleTime(30, TimeUnit.SECONDS)

// .maintenanceFrequency(10, TimeUnit.SECONDS)

// .maintenanceInitialDelay(11, TimeUnit.SECONDS)

// .minSize(10)

// .maxSize(20)

// .build())

// .build();

// return MongoClients.create(settings);

return MongoClients.create("mongodb://127.0.0.1:27017/appdb");

}

@Bean

public MongoDatabaseFactory mongoDatabaseFactory() {

// new SimpleMongoClientDatabaseFactory()

return new SimpleMongoClientDatabaseFactory(mongoClient(), "appdb");

}

}

  1. 实体类

@Document("book")

@Data

@NoArgsConstructor

@AllArgsConstructor

public class Book {

@Id

private String id;

private String title;

private Integer page;

}

  1. mapper类

@Repository

public interface BookDao extends MongoRepository<Book, String> {

@Query("{'page' : {\"$gt\" : ?0}}")

public List<Book> findByPageGreaterThan(int page);

}

  1. 测试

@Test

public void test16(){

Criteria criteria = Criteria.where("page").gte(10).lte(20);

Query query = new Query(criteria);

List<Book> list = mongoTemplate.find(query, Book.class);

System.out.println(list.size());

}

@Test

// 字段distinct查询

public void testkl(){

Criteria c = Criteria.where("title").is("China");

Query q = new Query();

List<String> distinct = mongoTemplate.findDistinct(

q, //查询条件

"title", //需要去重的列

"book", //表名

String.class //该表对应的实体类

);

distinct.forEach(System.out::println);

}

// 模糊查询

@Test

public void test05(){

Query query = new Query();

String pattern_name = "Zh";

Pattern pattern = Pattern.compile("^"+pattern_name, Pattern.CASE_INSENSITIVE);

query.addCriteria(Criteria.where("title").regex(pattern));

System.out.println(mongoTemplate.find(query, Book.class,"book").size());

}

相关文章:

springboot操作MongoDB

启动类及配置import com.mongodb.client.MongoClient;import com.mongodb.client.MongoClients;import com.mongodb.client.internal.MongoClientImpl;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplicatio…...

1月奶粉电商销售数据榜单:销售额约20亿,高端化趋势明显

鲸参谋电商数据监测的2023年1月份京东平台“奶粉”品类销售数据榜单出炉&#xff01; 根据鲸参谋数据显示&#xff0c;1月份京东平台上奶粉的销量约675万件&#xff0c;销售额约20亿元&#xff0c;环比均下降19%左右。与去年相比&#xff0c;整体也下滑了近34%。可以看出&#…...

跨境数据传输是日常业务中经常且至关重要的组成部分

跨境数据传输是日常业务中经常且至关重要的组成部分。在过去的20年中&#xff0c;由于全球通信网络和业务流程的发展&#xff0c;全球数据流的模式已迅速发展。随着数据从数据中心移到数据中心和/或跨边界移动&#xff0c;安全漏洞已成为切实的风险。有可能违反国家和国际数据传…...

错误: tensorflow.python.framework.errors_impl.OutOfRangeError的解决方案

近日&#xff0c;在使用CascadeRCNN完成目标检测任务时&#xff0c;我在使用这个模型训练自己的数据集时出现了如下错误&#xff1a; tensorflow.python.framework.errors_impl.OutOfRangeError: PaddingFIFOQueue _1_get_batch/batch/padding_fifo_queue is closed and has in…...

springboot项目初始化执行sql

Sprint Boot应用可以在启动的时候自动执行项目根路径下的SQL脚本文件。我们需要先将sql脚本写好&#xff0c;并将这些静态资源都放置在src/main/resources文件夹下。 再配置application.yml&#xff1a; spring.datasource.initialization-mode 必须配置初始化模式initializa…...

Kubernetes之存储管理(中)

NFS网络存储 emptyDir和hostPath存储&#xff0c;都仅仅是把数据存储在pod所在的节点上&#xff0c;并没有同步到其他节点&#xff0c;如果pod出现问题&#xff0c;通过deployment会产生一个新的pod&#xff0c;如果新的pod不在之前的节点&#xff0c;则会出现问题&#xff0c…...

MySQL workbench的基本操作

1. 创建新的连接 hostname主机名输入“local host”和“127.0.0.1”效果是一样的&#xff0c;指的是本地的服务器。 需要注意的是&#xff0c;此处的密码在安装软件的时候已经设定。 点击【Test Connection】&#xff0c;测试连接是否成功。 创建完的连接可以通过&#xff0c…...

【Flink】FlinkSQL中Table和DataStream互转

在我们实际使用Flink的时候会面临很多复杂的需求,很可能需要FlinkSQL和DataStream互相转换的情况,这就需要我们熟练掌握Table和DataStream互转,本篇博客给出详细代码以及执行结果,可直接使用,通过例子可学会Table和DataStream互转,具体步骤如下: maven如下<?xml ver…...

网络总结知识点(网络工程师必备)一

♥️作者:小刘在C站 ♥️个人主页:小刘主页 ♥️每天分享云计算网络运维课堂笔记,努力不一定有收获,但一定会有收获加油!一起努力,共赴美好人生! ♥️夕阳下,是最美的绽放,树高千尺,落叶归根人生不易,人间真情 目录 1.TCP UDP协议的区别 2.ARP是第几层协议,其作用...

离线安装samba与配置(.tar方式安装)

一、samba离线安装【安装并设置成功后&#xff0c;相关文件及其位置&#xff1a;①smbd&#xff1a;/usr/local/samba/sbin/smbd②nmdb&#xff1a;/usr/local/samba/sbin/nmbd③配置文件 smb.conf&#xff1a;/usr/local/samba/lib/smb.conf④添加用户的 smbpasswd 文件&#…...

[Java基础]—JDBC

前言 其实学Mybatis前就该学了&#xff0c;但是寻思目前主流框架都是用mybatis和mybatis-plus就没再去看&#xff0c;结果在代码审计中遇到了很多cms是使用jdbc的因此还是再学一下吧。 第一个JDBC程序 sql文件 INSERT INTO users(id, NAME, PASSWORD, email, birthday) VAL…...

基本面向对象编程-计算机基本功能实现_

《C/S项目实训》实验报告 实验名称&#xff1a; 基本面向对象编程-计算机基本功能实现_ 一、实验目的 通过综合实践项目&#xff0c;理解Java 程序设计是如何体现面向对象编程基本思想&#xff0c;掌握OOP方法&#xff0c;掌握事件触发、消息响应机制。进一步巩固面向对…...

C++面向对象之多态性

文章目录C面向对象之多态性1.静态多态2.动态多态3.多态的好处3.1使用方法4.纯虚函数5.虚析构与纯虚析构5.1问题5.2解决6.其他知识点7.代码8.测试结果8.1父类中无虚函数&#xff0c;父类的指针指向子类对象&#xff0c;将调用父类中的函数&#xff0c;无法调用子类中的重写函数&…...

Android性能优化系列篇:弱网优化

弱网优化1、Serializable原理通常我们使用Java的序列化与反序列化时&#xff0c;只需要将类实现Serializable接口即可&#xff0c;剩下的事情就交给了jdk。今天我们就来探究一下&#xff0c;Java序列化是怎么实现的&#xff0c;然后探讨一下几个常见的集合类&#xff0c;他们是…...

Mysql 插入大批量数据调优方法

Mysql 插入大批量数据调优方法[toc]1、多线程插入&#xff08;单表&#xff09;在数据里做插入操作的时候&#xff0c;整体时间的分配是这样的&#xff1a;链接耗时 &#xff08;30%&#xff09;发送query到服务器 &#xff08;20%&#xff09;解析query &#xff08;20%&#…...

matlab基础

系列文章目录 文章目录系列文章目录前言1 基本用法总结基础语法桌面管理矩阵均匀间隔矢量矩阵创建矩阵索引前言 介绍了matlab的基本用法 1 基本用法 >> save filename.mat % 将当前工作区的所有变量保存为mat文件 >> load filename.mat % 加载文件>> loa…...

自动化测试——多窗口切换和切换frame

这里写目录标题一、多窗口切换1、base.py&#xff1a;公共代码2、切换句柄的方式1&#xff0c;通过for循环3、切换句柄的方式2&#xff0c;通过索引切换4、源代码二、frame窗口1、什么是frame?2、Frame 分类3、判断要定位的元素在不在frame中两种方式方式一&#xff1a;鼠标选…...

C#中,Elasticsearch.Net判断空字符串

之前有个业务需求&#xff0c;由于最开始存储到es里的&#xff0c;是默认空字符串。 后面程序取数据时&#xff0c;发现需要取空字符串的数据时&#xff0c;不好取出来。 字符串的字段如图&#xff1a; 实际数据如图&#xff1a; 我用的是C#语言&#xff0c;使用的是Elastic…...

23种设计模式-适配器模式

适配器模式&#xff08;Adapter Pattern&#xff09;是一种常用的设计模式&#xff0c;它可以将不兼容的接口转换成可兼容的接口&#xff0c;使得原本不能一起工作的类可以协同工作。 在Java中&#xff0c;适配器模式一般有两种实现方式&#xff0c;即类适配器模式和对象适配器…...

深入理解this指向问题

this指向 在运行时绑定&#xff0c;所以this和函数的调用方式和调用的位置有关&#xff0c;和定义的位置没关系 绑定规则 默认绑定&#xff08;非严格模式下this指向全局变量&#xff0c;在严格模式下函数内的this指向undefined&#xff09; 独立函数调用&#xff0c;没有主题 …...

地震勘探——干扰波识别、井中地震时距曲线特点

目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波&#xff1a;可以用来解决所提出的地质任务的波&#xff1b;干扰波&#xff1a;所有妨碍辨认、追踪有效波的其他波。 地震勘探中&#xff0c;有效波和干扰波是相对的。例如&#xff0c;在反射波…...

反向工程与模型迁移:打造未来商品详情API的可持续创新体系

在电商行业蓬勃发展的当下&#xff0c;商品详情API作为连接电商平台与开发者、商家及用户的关键纽带&#xff0c;其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息&#xff08;如名称、价格、库存等&#xff09;的获取与展示&#xff0c;已难以满足市场对个性化、智能…...

练习(含atoi的模拟实现,自定义类型等练习)

一、结构体大小的计算及位段 &#xff08;结构体大小计算及位段 详解请看&#xff1a;自定义类型&#xff1a;结构体进阶-CSDN博客&#xff09; 1.在32位系统环境&#xff0c;编译选项为4字节对齐&#xff0c;那么sizeof(A)和sizeof(B)是多少&#xff1f; #pragma pack(4)st…...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

聊聊 Pulsar:Producer 源码解析

一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台&#xff0c;以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中&#xff0c;Producer&#xff08;生产者&#xff09; 是连接客户端应用与消息队列的第一步。生产者…...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器&#xff0c;其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机&#xff08;Virtual Host&#xff09;。 1. 简介 Nginx 使用 server_name 指令来确定…...

Map相关知识

数据结构 二叉树 二叉树&#xff0c;顾名思义&#xff0c;每个节点最多有两个“叉”&#xff0c;也就是两个子节点&#xff0c;分别是左子 节点和右子节点。不过&#xff0c;二叉树并不要求每个节点都有两个子节点&#xff0c;有的节点只 有左子节点&#xff0c;有的节点只有…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)

目录 一、&#x1f44b;&#x1f3fb;前言 二、&#x1f608;sinx波动的基本原理 三、&#x1f608;波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、&#x1f30a;波动优化…...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)

在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马&#xff08;服务器方面的&#xff09;的原理&#xff0c;连接&#xff0c;以及各种木马及连接工具的分享 文件木马&#xff1a;https://w…...

Spring是如何解决Bean的循环依赖:三级缓存机制

1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间‌互相持有对方引用‌,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...