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

0115 springboot template方式操作mongodb

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

0115 springboot template方式操作mongodb

前言

redis性能基准是10w次读写/秒;
但是不适用于下面的场景:
需要缓存,但是经常需要统计,分析和查询。
这种场景适合使用Mongodb;
他是最接近关系数据库的NOSQL;

mongodb介绍

C++语言编写,基于分布式文件存储的开源数据库系统,在负载高的时候,可以添加更多的节点,保证服务器性能。可扩展高性能的数据存储方案。
mongodb把数据存储为一个文档,数据结构是键值对,字段值还可以包含其他的文档,数组等;

安装mongodb

我的是mac电脑,简单记录一下安装和使用步骤;

  1. brew cask install mongodb
  2. 设置path ;
  3. mongo 连接mongodb
  4. use database_name 创建数据库
配置 依赖

	org.springframework.boot
  spring-boot-starter-data-mongodb


	com.alibaba
  fastjson
  1.2.39

属性配置
spring.data.mongodb.host=127.0.0.1
spring.data.mongodb.username=spring
spring.data.mongodb.password=123456
spring.data.mongodb.port=27017
spring.data.mongodb.database=springboot
MongoTemplate

可以直接通过MongoTemplate操作mongodb;

代码

package com.springbootpractice.demo.mongodb.service;

import com.mongodb.client.result.DeleteResult;
import com.mongodb.client.result.UpdateResult;
import com.springbootpractice.demo.mongodb.dao.entity.User;
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.data.mongodb.core.query.Update;
import org.springframework.stereotype.Service;

import java.util.List;


@Service
public class UserService {

    private final MongoTemplate mongoTemplate;

    public UserService(MongoTemplate mongoTemplate) {
 this.mongoTemplate = mongoTemplate;
    }

    public void saveUser(User user) {
 mongoTemplate.save(user);
    }

    public DeleteResult deleteUser(Long id) {
 Query query = Query.query(Criteria.where("id").is(id));
 return mongoTemplate.remove(query, User.class);
    }

    public List findUser(String userName, String note, int skip, int limit) {
 final Criteria criteria = Criteria.where("userName")
  .regex(userName)
  .and("note")
  .regex(note);
 Query query = Query.query(criteria)
  .limit(limit)
  .skip(skip);
 return mongoTemplate.find(query, User.class);
    }

    public UpdateResult updateUser(Long id, String userName, String note) {
 Update update = new Update();
 update.set("userName", userName);
 update.set("note", note);
 Query query = Query.query(Criteria.where("id").is(id));
 return mongoTemplate.updateFirst(query, update, User.class);
    }

    public User getUser(Long id) {
 return mongoTemplate.findById(id, User.class);
    }
}

测试代码

package com.springbootpractice.demo.mongodb;

import com.springbootpractice.demo.mongodb.dao.entity.Role;
import com.springbootpractice.demo.mongodb.dao.entity.User;
import com.springbootpractice.demo.mongodb.service.UserService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.Arrays;
import java.util.stream.IntStream;

@SpringBootTest
class DemoMongodbApplicationTests {

    @Autowired
    private UserService userService;

    @Test
    void mongodbTest() {

 IntStream.rangeClosed(1, 10).forEach((item) -> {
     final long id = System.currentTimeMillis();
     userService.saveUser(User.builder().id(id)
      .userName("user")
      .note("note")
      .roles(Arrays.asList(Role.builder().id(id)
 .roleName("role" + id)
 .note("note" + id)
 .build(),
Role.builder().id(id + 1000000)
 .roleName("_role" + id)
 .note("_note" + id)
 .build()
      ))
      .build());

 });

 userService.findUser("user", "note", 0, 10)
  .forEach(System.out::println);

    }

}

template方式操作mongodb代码点我!

小结

本篇文章你可以学会:

  1. mongodb的简要介绍,安装;
  2. springboot的template方式实现mongodb的增删改查操作;
转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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