首先要导的包:
pom.xml
<!-- mongodb java driver -->
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.4.3</version>
</dependency>
<!-- spring data mongodb -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-commons</artifactId>
<version>1.11.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-mongodb</artifactId>
<version>1.8.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-commons-core</artifactId>
<version>1.4.1.RELEASE</version>
</dependency>
配置文件:mongoDB-config.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:context="http://www.springframework.org/schema/context"
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.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo-1.8.xsd
http://www.springframework.org/schema/data/repository
http://www.springframework.org/schema/data/repository/spring-repository-1.5.xsd">
<mongo:mongo-client id="mongoClient" replica-set="127.0.0.1:27017"/>
<mongo:mongo replica-set="127.0.0.1:27017"/>
<mongo:db-factory dbname="wenzailong" mongo-ref="mongo"/>
<mongo:template id="mongoTemplate" db-factory-ref="mongoDbFactory"/>
</beans>
在spring-config.xml中导入该配置文件
<import resource="classpath:mongoDB/mongoDB-config.xml"/>
写一个MOngoDBUtils工具类:
@Component
public class MongoDBUtils {
private static final Logger logger = LoggerFactory.getLogger(MongoDBUtils.class);
@Autowired
private static MongoTemplate mongoTemplate;
/*根据集合名存数据*/
public static void insertOneWithCollectionName(Object o,String collectionName) throws NulidexiaomaException {
try{
mongoTemplate.insert(o,collectionName);
}catch (Exception e){
logger.error("mongoDB:插入数据报错",e);
throw new NulidexiaomaException("mongoDB:插入数据报错" + e.getMessage());
}
}
/*自动根据对象类型创建集合并存数据*/
public static void insertOne(Object o) throws NulidexiaomaException {
try{
mongoTemplate.insert(o);
}catch (Exception e){
logger.error("mongoDB:插入数据报错",e);
throw new NulidexiaomaException("mongoDB:插入数据报错" + e.getMessage());
}
}
@Resource(name = "mongoTemplate")
public void setMongoTemplate(MongoTemplate mongoTemplate) {
MongoDBUtils.mongoTemplate = mongoTemplate;
}
}
用@Component只是为了让该工具类变成一个bean,让spring管理,注意看下面的实例化属性
@Resource(name = "mongoTemplate")
public void setMongoTemplate(MongoTemplate mongoTemplate) {
MongoDBUtils.mongoTemplate = mongoTemplate;
}
因为所有的方法都是静态的,而在静态方法中,我们调用了mongoTemplate,所以mongoTemplate属性也必须为静态,静态的实例化只能通过上述的方式。
测试Demo:@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:spring-config.xml")
public class MongoDBTest {
@Test
public void insertOneTest(){
MongoDBDomain mongoDBDomain = new MongoDBDomain();
mongoDBDomain.setAge("1");
mongoDBDomain.setName("wzl");
try {
MongoDBUtils.insertOne(mongoDBDomain);
/*MongoDBUtils.insertOneWithCollectionName(a,"wzl");*/
System.out.println("OK");
} catch (NulidexiaomaException e) {
e.printStackTrace();
System.out.println(e.getMessage());
}
}
class MongoDBDomain{
String id ;
String name;
String age;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}
}
这样就可以了.注意mongoDB存的实体类的id属性不能的Integer类型。