由于也是刚接触MongoDB,自己倒腾了一下MongoDB的安装配置,以及基本语法结构后,就着手搭建了这个Demo。源码在这里
pom.xml
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<spring.version>5.1.3.RELEASE</spring.version>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13-beta-1</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-mongodb</artifactId>
<version>2.1.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
</dependency>
</dependencies>
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.3.xsd"
>
<!--使用注解管理bean -->
<context:annotation-config/>
<!-- 扫描所有类 -->
<context:component-scan base-package="com.mongo">
<context:exclude-filter type = "annotation" expression = "org.springframework.stereotype.Controller"/>
</context:component-scan>
<import resource="mongo.xml" />
</beans>
mongo.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/context
http://www.springframework.org/schema/context/spring-context-4.3.xsd
http://www.springframework.org/schema/data/mongo
http://www.springframework.org/schema/data/mongo/spring-mongo-2.0.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.3.xsd">
<!-- 加载mongodb的属性配置文件 -->
<context:property-placeholder location="classpath:mongodb.properties" />
<!-- 连接mongo-->
<mongo:mongo-client id="mongo" port="${mongo.port}" host="${mongo.host}"/>
<!-- 连接工厂-->
<mongo:db-factory id="mgFactory" mongo-ref="mongo" dbname="${mongo.dbname}" />
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg name="mongoDbFactory" ref="mgFactory"/>
</bean>
</beans>
User.java
@Document(collection = "user")
public class User {
@Id
private String id;
@Field(value = "name")
private String name;
@Field(value = "age")
private Integer age;
public User(String name, Integer age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
@Override
public String toString() {
return "User{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
", age=" + age +
'}';
}
}
UserTest.java
@ContextConfiguration({ "classpath:applicationContext.xml"})
@RunWith(SpringJUnit4ClassRunner.class)
public class UserTest {
@Autowired
private MongoTemplate mongoTemplate;
private static final String collectionName = "user";
@Test
public void add(){
for (int i = 0; i < 20; i ++){
User user = new User("测试" + i,i);
mongoTemplate.save(user);
}
}
@Test
public void delete(){
//只删除查询到的第一条
//System.out.println(mongoTemplate.findAndRemove(new Query(Criteria.where("age").is(1)),User.class));
//删除查询到的所有记录
//System.out.println(mongoTemplate.findAllAndRemove(new Query(Criteria.where("age").gte(0)),User.class));
//直接删除所有
mongoTemplate.remove(new Query(Criteria.where("age").gte(0)),User.class);
}
@Test
public void update(){
//mongoTemplate.updateFirst() 删除符合条件的第一个
mongoTemplate.upsert(new Query(Criteria.where("age").gte(100)),
Update.update("name","修改后的").set("title","新增"),User.class); //删除符合条件的记录,没有符合条件的则添加
/* mongoTemplate.updateMulti(new Query(Criteria.where("age").gte(0)),
Update.update("name","修改后的").set("title","新增"),User.class);*/
//查询并删除
/* System.out.println(mongoTemplate.findAndModify(new Query(Criteria.where("age").is(0)),
new Update().set("name","修改后的"),User.class));*/
}
@Test
public void select(){
//查询符合条件的第一个
System.out.println(mongoTemplate.findOne(new Query(Criteria.where("age").gte(0)),User.class));
//查询user集合所有数据
System.out.println(mongoTemplate.findAll(User.class));
//查询age >= 0 的所有数据
System.out.println(mongoTemplate.find(new Query(Criteria.where("age").gte(0)),User.class));
}
}