spring-boot 集成 mongodb
集成使用
添加依赖(版本自己选择)
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
添加配置文件
bootstrap.yml
spring:
data:
mongodb:
uri: mongodb://dba:12qwaszxqq@192.168.31.104:20007/swms-fms
用户名:密码@ip:端口/库名
Template注入
@Resource
private MongoTemplate MongodbTemplate;
方法调用(其他方法查看具体MongodbTemplate api)
public <T> List<T> selectFromMongodb(Query query, Class cla) {
return this.MongodbTemplate.find(query, cla);
}
public <T> T insertMongodb(T t) {
return this.MongodbTemplate.insert(t);
}
开启事务
前提:mongo开启事务需要mong服务开启分片
请参考本人记录:https://blog.csdn.net/qq_39347667/article/details/119680069
其他: 事务控制只能用在已存在的集合中,也就是集合需要手工添加不会由jpa创建会报错"Cannot create namespace glcloud.test_user in multi-document transaction."
添加依赖
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-mongodb</artifactId>
<version>3.1.1</version>
</dependency>
事务配置
/**
* 配置mongo事务
*/
@Configuration
public class MongoConfig {
public MongoConfig() {
}
@Bean
MongoTransactionManager transactionManager(MongoDatabaseFactory mongoDatabaseFactory) throws Exception {
return new MongoTransactionManager(mongoDatabaseFactory);
}
}
启动类添加注解 @EnableTransactionManagement
注意注解扫描范围 @ComponentScans 需要配置可以扫描到事务配置
事务使用
@Transactional(rollbackFor = Exception.class,value = "transactionManager")
public void saveTest(Mongo test) {
mongoTemplate.save(test);
}