springmongodb(Spring MongoDb用事务管理器提交事务与回滚事务)

本篇文章给大家谈谈springmongodb,以及Spring MongoDb用事务管理器提交事务与回滚事务对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

spring连接MongoDB报错XXX, password=<hidden>

SpringBoot在yaml中配置MongDB:

报亮雹错提示密码password= hidden 没用输入,账号admin,123456在xshell和naviate都能正常进入。

正确配置:

密码需要用单引号引入才行配源。培键态

[img]

SpringBoot整合MongoDB实战

MongoTemplate配置

一般情况下,按照如下配置,springboot会进行自动装配,但是如果需要实现一些自定义的功能,例如密码加解密,类型转换等功能需要手写配置MongoTemplate。

@EnableMongoRepositories()表示支持Spring JPA,即通过规范命名的接口来实现简单的DB操作,不需要自己写Query,可以通过该注解的value属性来指定注解的作用范围。

ReUtil是一个正则表达式的工具类,用于判断配置文件的格式是否正确核闹,配置MongoDatabaseFactory过程中实现一个比较简单的配置文件解密的过程,解密方法用简单的字符串翻转来实现。

通过MappingMongoConverter来实现java中的对象与MongoDB中的Document进行一些复杂的映射,默认情况下一个java域对象存入MongoDB时会生成一个"_class"的key对应存储Java对象类型,通过

来取消每条记录生成一个"-class"的数据。

通过MappingMongoConverter实现一个简单的时间转化功能TimestampConverter,如下所示

还可以进行更加精细化的配置,例如

可以通过WritingConverter和ReadingConverter配置Document和Java对象相互转化。

MongoTemplate实战

例如一个博客系统,我们通过MongoDB存储用户的浏览记录,浏览记录的实体如下所示,

如上所示,每个人对应每篇文章有一条浏览记录,每次访问都会对访问次数viewCount进行+1操作.下文针对这个场景介绍MongoTemplate的基本操作。

这些操作用法基本一样,如下所示,传入一个封装查询条件的对象Query,Java中映射的对象entityClass和MongoDB中对应的Document的名称。

例如我们想要查询某个用户某篇博客的访问次数,我们只需要通过博客id和访问者构建查询条件进行查询即可。

findAndModify表示更新符合查询条件的记录,其方法如下所示,

Query封装查询条件,Update封装的是更新内容。例如用户每次刷新页面浏览次数会+1操作,我们可以使用findAndModify操作,如下所示

如上所示,首先判断用户是否存在访问记录,如果存在则通过Update对访问次数viewCount进行+1操作,若不存在访问记录则新建访问记录。

保存操改宽罩作包括主要包括insert和save方法,这两个方法都没有返回值,同时两个方法有一些区别,

该方法如下所示,

注释说明该方法的功能是,如果存在与查询条件匹配的文档,则根据Update中的内容进行更新,如果不存在符合查询条件的内容,则根据查询条件和Update插入新的文档。

聚合查询 MongoDB 中聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果。本文侧重于Java实现。

结合上述中的访问记录的场景,如果我们需要统计某个博主某个专栏下面所有文章的访问记录,包括访问巧陪总人数,访问总次数,以及每个访客对应的访问次数详情,并且要满足分页需求,那么我们需要用到MongoDB的聚合操作,具体实现如下所示

总结

本文详细介绍了SpringBoot如何整合MongoDB,并且结合博客系统的访问记录展示了MongoTemplate的基本用法。

springboot怎么连接mongodb的

springboot连接mongodb方法:

pom.xml

project xmlns="肢余陆" xmlns:xsi=""

xsi:schemaLocation=" "

modelVersion4.0.0/modelVersion

groupIdcom.example/groupId

artifactIdmyproject/artifactId

version0.0.1-SNAPSHOT/version

packagingjar/packaging

namemyproject/name

url;/url

!-- 要继承的项目 --

parent

groupIdorg.springframework.boot/groupId

artifactIdspring-boot-starter-parent/artifactId

version1.2.7.RELEASE/version

/parent

properties

project.build.sourceEncodingUTF-8/project.build.sourceEncoding

/properties

dependencies

dependency

groupIdjunit/groupId

artifactIdjunit/artifactId

scopetest/scope

/dependency

dependency

groupIdorg.springframework.boot/groupId

artifactIdspring-boot-starter-web/artifactId

exclusions

exclusion

artifactIdlog4j-over-slf4j/artifactId

groupIdorg.slf4j/groupId

/exclusion

/exclusions

/dependency

dependency

groupIdorg.springframework.boot/groupId

artifactIdspring-boot-starter-data-MongoDB/artifactId

/dependency

dependency

groupIdorg.springframework.boot/groupId

artifactIdspring-boot-starter-log4j/artifactId

/dependency

/dependencies毁绝

build

plugins

plugin

groupIdorg.springframework.boot/groupId

artifactIdspring-boot-maven-plugin/artifactId

/plugin

/plugins

/build

repositories

repository

idspring-snapshots历顷/id

url;/url

snapshots

enabledtrue/enabled

/snapshots

/repository

repository

idspring-milestones/id

url;/url

/repository

/repositories

/project

package com.example.myproject.dao;

import Java.util.List;

import com.mongodb.DBObject;

public interface UserDao {

long count();

ListDBObject find();

}

package com.example.myproject.dao.impl;

import java.util.ArrayList;

import java.util.List;

import javax.annotation.PostConstruct;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Repository;

import com.example.myproject.dao.UserDao;

import com.mongodb.DB;

import com.mongodb.DBCollection;

import com.mongodb.DBCursor;

import com.mongodb.DBObject;

import com.mongodb.MongoClient;

@Repository

public class UserDaoImpl implements UserDao{

@Autowired

MongoClient client;

DBCollection dbCollection;

//初始化方法

@PostConstruct

public void init(){

DB db = client.getDB("test");

dbCollection = db.getCollection("users");

}

public long count() {

return dbCollection.count();

}

public ListDBObject find(){

DBCursor it = dbCollection.find();

ListDBObject result=new ArrayListDBObject();

while(it.hasNext()){

DBObject object = it.next();

result.add(object);

}

return result;

}

}

测试类:

@RestController

@EnableAutoConfiguration

@ComponentScan

public class Example {

@Autowired

ConnectionSettings connection;

@Autowired

UserDaoImpl userDao;

private Logger logger = Logger.getLogger(Example.class);

@RequestMapping("/")

String home() throws UnknownHostException {

long count = userDao.count();

System.out.println(count);

ListDBObject find = userDao.find();

for(int i=0;ifind.size();i++){

DBObject DBObject = find.get(i);

System.out.println(DBObject);

}

logger.info(connection.getName() + "--" + connection.getAge());

return connection.getName() + connection.getAge() + connection.getSex();

}

public static void main(String[] args) throws Exception {

SpringApplication.run(Example.class, args);

}

}

关于springmongodb和Spring MongoDb用事务管理器提交事务与回滚事务的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

标签列表