Spring+MongoDB配置簡單Demo
阿新 • • 發佈:2018-12-27
由於也是剛接觸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));
}
}