当前位置: 首页 > 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());

}

http://www.lryc.cn/news/26685.html

相关文章:

  • 1月奶粉电商销售数据榜单:销售额约20亿,高端化趋势明显
  • 跨境数据传输是日常业务中经常且至关重要的组成部分
  • 错误: tensorflow.python.framework.errors_impl.OutOfRangeError的解决方案
  • springboot项目初始化执行sql
  • Kubernetes之存储管理(中)
  • MySQL workbench的基本操作
  • 【Flink】FlinkSQL中Table和DataStream互转
  • 网络总结知识点(网络工程师必备)一
  • 离线安装samba与配置(.tar方式安装)
  • [Java基础]—JDBC
  • 基本面向对象编程-计算机基本功能实现_
  • C++面向对象之多态性
  • Android性能优化系列篇:弱网优化
  • Mysql 插入大批量数据调优方法
  • matlab基础
  • 自动化测试——多窗口切换和切换frame
  • C#中,Elasticsearch.Net判断空字符串
  • 23种设计模式-适配器模式
  • 深入理解this指向问题
  • 事业单位联考(综合应用A类)典型例题教案
  • frp内网穿透实验
  • 认识JavaScript中的防抖函数
  • macOS 13.3 Beta 2 (22E5230e)With OpenCore 0.8.9正式版 and winPE双引导分区原版镜像
  • JetPack—DataStore核心原理与使用
  • 热烈祝贺|酒事有鲤盛装亮相2023中国(山东)精酿啤酒产业发展创新论坛暨展览会
  • 深度强化学习DLR
  • Android Handler机制(四) Message源码分析
  • 【Git】git命令(全)
  • 软考论文-成本管理(1)
  • Java 多线程 --- 锁的概念和类型划分