MongoDBTemlate

本文介绍如何使用MongoDBTemplate进行数据库的基本操作,包括增删改查等,并提供了批量操作的示例,最后展示了如何配置和创建MongoTemplate实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MongoDBTemlate

1.单个操作
1.1增加
// 方式一:不支持批量操作,若主键存在则会对当前存在的数据进行修改操作
public void saveIdtfCode(IdtfCodePO idtfCode) {
    // 保存Object到指定的collection
    mongoTemplate.save(idtfCode, ParaConstants.IDTF_RECORD_COLLECTION);
}

// 方式二:支持批量操作,效率高,若主键已存在则会抛出提示主键重复的异常
public void insertAddressList(AddressList addressList) {
    mongoTemplate.insert(addressList, "addressList");
}
1.2删除
public void deleteAdAddressList(AddressList addressList) {
    Query query = new Query(Criteria.where("userId").is(addressList.getUserId()));
    // 根据query条件删除指定collection的数据
    mongoTemplate.remove(query, ParaConstants.IDTF_RECORD_COLLECTION);
}
1.3查找
public String getKeyById(UserPO user) {
    Query query = new Query(Criteria.where(SymbolConstants.APPID).is(user.getAppId()));
    // 根据查询条件query,查找指定collection中的数据
    List<UserPO> list = mongoTemplate.find(query, UserPO.class, ParaConstants.USER_COLLECTION);
    return list.get(0).getSecretKey();
}
1.4修改
@Override
public void updateIdtfCode(IdtfCodePO idtfCode, String paraName) {
    Query query = new Query(Criteria.where(SymbolConstants.MSGID).is(idtfCode.getMsgId()));
    // 指定更新的参数名和参数值
    Update update = new Update().set(paraName, value);
    // 更新查询返回结果集的第一条
    mongoTemplate.findAndModify(query, update, IdtfCodePO.class, ParaConstants.IDTF_RECORD_COLLECTION);
}
2.批量操作
// 对指定collection进行批量操作(仅支持insert、remove、update操作)。UNORDERED表示并行执行
BulkOperations bulkOps = mongoTemplate.bulkOps(BulkOperations.BulkMode.UNORDERED, COLLECTION);
Query query = null;
Update update = null;
AuthDeveloper authDeveloper = null;
// 循环修改
for (int i = 0; i < authDevelopers.size(); ++i) {
    authDeveloper = authDevelopers.get(i);
    query = new Query(Criteria.where("workNumber").is(authDeveloper.getWorkNumber()));
    update = new Update().set("authorityList", authDeveloper.getAuthorityList());
    bulkOps.updateOne(query, update);
}
// 批量提交执行
bulkOps.execute();
3.创建MongoTemplate

引入pom配置

<dependency>
    <groupId>org.mongodb</groupId>
    <artifactId>mongo-java-driver</artifactId>
    <version>3.5.0</version>
</dependency>
<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-mongodb</artifactId>
    <version>2.0.0.RELEASE</version>
</dependency> 
3.1Spring Boot的创建方式

在application.properties中进行配置

spring.data.mongodb.host=47.106.122.242
spring.data.mongodb.port=27017
spring.data.mongodb.database=SMSPLATFORM
spring.data.mongodb.username=root
spring.data.mongodb.password=root

自动注入

@Autowired
private MongoTemplate mongoTemplate;
3.2一般创建方式

配置数据源

 /**
  * 此种方式还可以配置多个数据源,此处演示配置多个数据源
  */
// 第一个数据源,通过name放入容器
@Bean(name="primaryMongoTemplate")
public MongoDbFactory primaryMongoDbFactory(){
    ServerAddress serverAddress = new ServerAddress("host", "port");
    List<MongoCredential> credentialsList = new ArrayList<MongoCredential>();
    credentialsList.add(MongoCredential.createCredential("username", "database", "password".toCharArray()));
    return new SimpleMongoDbFactory(new MongoClient(serverAddress, credentialsList),database);
}

// 第一个数据源,通过name放入容器
@Bean(name="secondMongoTemplate")
public MongoDbFactory secondMongoDbFactory(){
    ServerAddress serverAddress = new ServerAddress("host", "port");
    List<MongoCredential> credentialsList = new ArrayList<MongoCredential>();
    credentialsList.add(MongoCredential.createCredential("username", "database", "password".toCharArray()));
    return new SimpleMongoDbFactory(new MongoClient(serverAddress, credentialsList),database);
}

自动注入

@Resource(name="primaryMongoTemplate")
private MongoTemplate primaryMongoTemplate;

@Resource(name="secondMongoTemplate")
private MongoTemplate secondMongoTemplate;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值