Spring-data-mongo配置示例

参考:http://docs.spring.io/spring-data/data-mongo/docs/1.8.0.M1/reference/html/#mongo.mongo-xml-config

一、applicationContext-mongodb.properties

#如果,mongodb有配置集群url间可以使用 ","隔开

mongo.url=192.168.1.156:27017

mongo.dbname=autocomplete

mongo.username=easy

mongo.password=easy

mongo.connectTimeout=3000

mongo.maxWaitTime=60000

mongo.autoConnectRetry=true

mongo.socketKeepAlive=true

mongo.socketTimeout=0

mongo.slaveOk=true

#连接池连接数

mongo.connectionsPerHost=20

二、applicationContext-mongodb.xml

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jee="http://www.springframework.org/schema/jee"

xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context"

xmlns:aop="http://www.springframework.org/schema/aop" xmlns:mongo="http://www.springframework.org/schema/data/mongo"

xsi:schemaLocation="http://www.springframework.org/schema/beans 

http://www.springframework.org/schema/beans/spring-beans-4.0.xsd

http://www.springframework.org/schema/tx

http://www.springframework.org/schema/tx/spring-tx-4.0.xsd

http://www.springframework.org/schema/jee

http://www.springframework.org/schema/jee/spring-jee-4.0.xsd

http://www.springframework.org/schema/aop

http://www.springframework.org/schema/aop/spring-aop-4.0.xsd

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context-4.0.xsd

http://www.springframework.org/schema/data/mongo

http://www.springframework.org/schema/data/mongo/spring-mongo-1.7.xsd"

default-lazy-init="true">


<mongo:mongo id="mongo" replica-set="${mongo.url}">

<mongo:options connections-per-host="${mongo.connectionsPerHost}"

threads-allowed-to-block-for-connection-multiplier="15"

connect-timeout="${mongo.connectTimeout}" max-wait-time="${mongo.maxWaitTime}"

auto-connect-retry="${mongo.autoConnectRetry}" socket-keep-alive="${mongo.socketKeepAlive}"

socket-timeout="${mongo.socketTimeout}" slave-ok="${mongo.slaveOk}"

write-number="1" write-timeout="0" write-fsync="true" />

</mongo:mongo>


<mongo:db-factory id="mongoDbFactory" dbname="${mongo.dbname}"

mongo-ref="mongo" username="${mongo.username}" password="${mongo.password}" />


<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">

<constructor-arg name="mongoDbFactory" ref="mongoDbFactory" />

</bean>

<!-- spring data,repositories 配置 -->

<mongo:repositories base-package="cn.com.easy.mongodb.dao" />

</beans>

三、测试用例


package cn.com.easy.mongodb.entry;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
/**
 * 搜索建议词条
 * 
 * @author nibili 2015年6月19日
 * 
 */
@Document
public class Word {
public static final String ID_FIELD = "id";
public static final String TEXT_FIELD = "text";
public static final String USECOUNT_FIELD = "useCount";
public static final String RESULTCOUNT_FIELD = "resultCount";
@Id
private String id;
/** 文本 */
private String text;
/** 拼音 */
private String pinyin;
/** 拼音首字母缩写 */
private String initials;
/** 使用次数 */
private Integer useCount;
/** 结果集大小 */
private Integer resultCount;
/**
 * get id
 * 
 * @return
 * @auth nibili 2015年6月19日
 */
public String getId() {
return id;
}
/**
 * set id
 * 
 * @param id
 * @auth nibili 2015年6月19日
 */
public void setId(String id) {
this.id = id;
}
/**
 * get 文本
 * 
 * @return
 * @auth nibili 2015年6月19日
 */
public String getText() {
return text;
}
/**
 * set 文本
 * 
 * @param text
 * @auth nibili 2015年6月19日
 */
public void setText(String text) {
this.text = text;
}
/**
 * get 拼音
 * 
 * @return
 * @auth nibili 2015年6月19日
 */
public String getPinyin() {
return pinyin;
}
/**
 * set 拼音
 * 
 * @param pinyin
 * @auth nibili 2015年6月19日
 */
public void setPinyin(String pinyin) {
this.pinyin = pinyin;
}
/**
 * get 拼音首字母缩写
 * 
 * @return
 * @auth nibili 2015年6月19日
 */
public String getInitials() {
return initials;
}
/**
 * set 拼音首字母缩写
 * 
 * @param initials
 * @auth nibili 2015年6月19日
 */
public void setInitials(String initials) {
this.initials = initials;
}
/**
 * get 使用次数
 * 
 * @return
 * @auth nibili 2015年6月19日
 */
public Integer getUseCount() {
return useCount;
}
/**
 * set 使用次数
 * 
 * @param useCount
 * @auth nibili 2015年6月19日
 */
public void setUseCount(Integer useCount) {
this.useCount = useCount;
}
/**
 * get 结果集大小
 * 
 * @return
 * @auth nibili 2015年6月19日
 */
public Integer getResultCount() {
return resultCount;
}
/**
 * set 结果集大小
 * 
 * @param resultCount
 * @auth nibili 2015年6月19日
 */
public void setResultCount(Integer resultCount) {
this.resultCount = resultCount;
}
}



import static org.springframework.data.mongodb.core.query.Criteria.where;
import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import cn.com.easy.mongodb.entry.Word;
import cn.com.easy.utils.FastJSONUtils;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("/applicationContext-mongodb-demo.xml")
public class MongoTest {
private static final Logger log = LoggerFactory.getLogger(MongoTest.class);
@Autowired
private MongoTemplate mongoTemplate;
/**
 * mongo插入
 * 
 * @auth nibili 2015年6月19日
 */
@Test
public void insert() {
try {
Word word = new Word();
word.setInitials("sj");
word.setPinyin("shouji");
word.setResultCount(10);
word.setText("手机");
word.setUseCount(100);
//
mongoTemplate.insert(word);
//
word = mongoTemplate.findOne(new Query(where(Word.TEXT_FIELD).is("手机")), Word.class);
log.info("结果:" + FastJSONUtils.toJsonString(word));
List<Word> list = mongoTemplate.findAll(Word.class);
log.info("结果List:" + FastJSONUtils.toJsonString(list));
} catch (Exception ex) {
ex.printStackTrace();
}
}
}


转载于:https://my.oschina.net/u/1045177/blog/468775

Spring Data MongoDB 中,`MongoWriter` 接口用于将对象转换为 MongoDB 文档并插入到集合中。`doInsertBatch` 方法是 `MongoTemplate` 类中的一个方法,用于批量插入数据。 下面是一个简单的示例,展示了如何使用 `MongoWriter` 和 `doInsertBatch` 方法将对象批量插入到 MongoDB 集合中: ```java public class Person { private String name; private int age; // getters and setters } public class PersonWriter implements MongoWriter<Person> { @Override public Document toDocument(Person object, MongoConverter converter) { Document document = new Document(); document.put("name", object.getName()); document.put("age", object.getAge()); return document; } } public class PersonDao { private MongoTemplate mongoTemplate; public void insertBatch(List<Person> persons) { mongoTemplate.execute(Person.class, collection -> { List<Document> documents = new ArrayList<>(); for (Person person : persons) { MongoWriter<Person> writer = new PersonWriter(); Document document = writer.toDocument(person, mongoTemplate.getConverter()); documents.add(document); } collection.insertMany(documents); return null; }); } } ``` 在上面的示例中,`PersonWriter` 类实现了 `MongoWriter` 接口,并重写了 `toDocument` 方法,将 `Person` 对象转换为 MongoDB 文档。`PersonDao` 类中的 `insertBatch` 方法使用 `MongoTemplate` 的 `execute` 方法执行 MongoDB 操作。在该方法内部,首先将传入的 `Person` 对象列表转换为 MongoDB 文档,并将这些文档存储在 `documents` 列表中。最后,使用 `collection.insertMany` 方法将文档批量插入到 MongoDB 集合中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值