Skip to content

Commit 21b973d

Browse files
author
Eugen
committed
Merge pull request eugenp#226 from alex-semenyuk/master
Introduction to Spring Data Mongodb
2 parents 5dcca02 + 56c715c commit 21b973d

File tree

9 files changed

+460
-0
lines changed

9 files changed

+460
-0
lines changed

spring-data-mongodb/.classpath

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<classpath>
3+
<classpathentry kind="src" output="target/classes" path="src/main/java">
4+
<attributes>
5+
<attribute name="optional" value="true"/>
6+
<attribute name="maven.pomderived" value="true"/>
7+
</attributes>
8+
</classpathentry>
9+
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
10+
<attributes>
11+
<attribute name="optional" value="true"/>
12+
<attribute name="maven.pomderived" value="true"/>
13+
</attributes>
14+
</classpathentry>
15+
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
16+
<attributes>
17+
<attribute name="maven.pomderived" value="true"/>
18+
</attributes>
19+
</classpathentry>
20+
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
21+
<attributes>
22+
<attribute name="maven.pomderived" value="true"/>
23+
</attributes>
24+
</classpathentry>
25+
<classpathentry kind="output" path="target/classes"/>
26+
</classpath>

spring-data-mongodb/.project

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<projectDescription>
3+
<name>spring-data-mongodb</name>
4+
<comment></comment>
5+
<projects>
6+
</projects>
7+
<buildSpec>
8+
<buildCommand>
9+
<name>org.eclipse.jdt.core.javabuilder</name>
10+
<arguments>
11+
</arguments>
12+
</buildCommand>
13+
<buildCommand>
14+
<name>org.eclipse.m2e.core.maven2Builder</name>
15+
<arguments>
16+
</arguments>
17+
</buildCommand>
18+
</buildSpec>
19+
<natures>
20+
<nature>org.eclipse.jdt.core.javanature</nature>
21+
<nature>org.eclipse.m2e.core.maven2Nature</nature>
22+
</natures>
23+
</projectDescription>

spring-data-mongodb/pom.xml

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
2+
<modelVersion>4.0.0</modelVersion>
3+
4+
<groupId>org.baeldung</groupId>
5+
<artifactId>spring-data-mongodb</artifactId>
6+
<version>0.0.1-SNAPSHOT</version>
7+
<packaging>jar</packaging>
8+
9+
<name>spring-data-mongodb</name>
10+
11+
<properties>
12+
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
13+
14+
<org.springframework.version>4.1.6.RELEASE</org.springframework.version>
15+
<org.hamcrest.version>1.3</org.hamcrest.version>
16+
<junit.version>4.11</junit.version>
17+
<rest-assured.version>2.4.1</rest-assured.version>
18+
</properties>
19+
20+
<dependencies>
21+
22+
<dependency>
23+
<groupId>org.springframework</groupId>
24+
<artifactId>spring-orm</artifactId>
25+
<version>${org.springframework.version}</version>
26+
</dependency>
27+
28+
<dependency>
29+
<groupId>org.springframework</groupId>
30+
<artifactId>spring-webmvc</artifactId>
31+
<version>${org.springframework.version}</version>
32+
</dependency>
33+
34+
<dependency>
35+
<groupId>org.springframework.data</groupId>
36+
<artifactId>spring-data-mongodb</artifactId>
37+
<version>1.7.1.RELEASE</version>
38+
</dependency>
39+
40+
<dependency>
41+
<groupId>jstl</groupId>
42+
<artifactId>jstl</artifactId>
43+
<version>1.2</version>
44+
</dependency>
45+
46+
<dependency>
47+
<groupId>junit</groupId>
48+
<artifactId>junit</artifactId>
49+
<version>3.8.1</version>
50+
<scope>test</scope>
51+
</dependency>
52+
53+
<dependency>
54+
<groupId>junit</groupId>
55+
<artifactId>junit-dep</artifactId>
56+
<version>${junit.version}</version>
57+
<scope>test</scope>
58+
</dependency>
59+
60+
<dependency>
61+
<groupId>org.hamcrest</groupId>
62+
<artifactId>hamcrest-core</artifactId>
63+
<version>${org.hamcrest.version}</version>
64+
<scope>test</scope>
65+
</dependency>
66+
67+
<dependency>
68+
<groupId>org.hamcrest</groupId>
69+
<artifactId>hamcrest-library</artifactId>
70+
<version>${org.hamcrest.version}</version>
71+
<scope>test</scope>
72+
</dependency>
73+
74+
<dependency>
75+
<groupId>org.springframework</groupId>
76+
<artifactId>spring-test</artifactId>
77+
<version>3.2.0.RELEASE</version>
78+
</dependency>
79+
80+
<dependency>
81+
<groupId>javax.servlet</groupId>
82+
<artifactId>javax.servlet-api</artifactId>
83+
<version>3.0.1</version>
84+
<scope>provided</scope>
85+
</dependency>
86+
</dependencies>
87+
<build>
88+
<plugins>
89+
<plugin>
90+
<artifactId>maven-compiler-plugin</artifactId>
91+
<version>2.3.2</version>
92+
<configuration>
93+
<source>1.8</source>
94+
<target>1.8</target>
95+
</configuration>
96+
</plugin>
97+
</plugins>
98+
</build>
99+
</project>
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package org.baeldung.config;
2+
3+
import org.springframework.context.annotation.Configuration;
4+
import org.springframework.data.mongodb.config.AbstractMongoConfiguration;
5+
6+
import com.mongodb.Mongo;
7+
import com.mongodb.MongoClient;
8+
9+
@Configuration
10+
public class MongoConfig extends AbstractMongoConfiguration {
11+
12+
@Override
13+
protected String getDatabaseName() {
14+
return "test";
15+
}
16+
17+
@Override
18+
public Mongo mongo() throws Exception {
19+
return new MongoClient("127.0.0.1", 27017);
20+
}
21+
22+
@Override
23+
protected String getMappingBasePackage() {
24+
return "org.baeldung";
25+
}
26+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package org.baeldung.model;
2+
3+
import org.springframework.data.annotation.Id;
4+
import org.springframework.data.mongodb.core.mapping.Document;
5+
6+
@Document
7+
public class User {
8+
9+
@Id
10+
private String id;
11+
private String name;
12+
private Integer age;
13+
14+
public String getId() {
15+
return id;
16+
}
17+
18+
public void setId(String id) {
19+
this.id = id;
20+
}
21+
22+
public String getName() {
23+
return name;
24+
}
25+
26+
public void setName(String name) {
27+
this.name = name;
28+
}
29+
30+
public Integer getAge() {
31+
return age;
32+
}
33+
34+
public void setAge(Integer age) {
35+
this.age = age;
36+
}
37+
}
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
package org.baeldung.repository;
2+
3+
import java.util.List;
4+
5+
import org.baeldung.model.User;
6+
import org.springframework.beans.factory.annotation.Autowired;
7+
import org.springframework.data.mongodb.core.MongoTemplate;
8+
import org.springframework.data.mongodb.core.query.Criteria;
9+
import org.springframework.data.mongodb.core.query.Query;
10+
import org.springframework.data.mongodb.core.query.Update;
11+
import org.springframework.stereotype.Repository;
12+
13+
import com.mongodb.WriteResult;
14+
15+
@Repository
16+
public class UserRepository {
17+
18+
@Autowired
19+
private MongoTemplate mongoTemplate;
20+
21+
public void insertUser(User user) {
22+
mongoTemplate.insert(user, "user");
23+
}
24+
25+
public List<User> listUser() {
26+
return mongoTemplate.findAll(User.class, "user");
27+
}
28+
29+
public void removeUser(User user) {
30+
mongoTemplate.remove(user, "user");
31+
}
32+
33+
public void saveUser(User user) {
34+
mongoTemplate.save(user, "user");
35+
}
36+
37+
public User findAndModifyUser(String name, String newName) {
38+
Query query = new Query();
39+
query.addCriteria(Criteria.where("name").is(name));
40+
Update update = new Update();
41+
update.set("name", newName);
42+
return mongoTemplate.findAndModify(query, update, User.class);
43+
}
44+
45+
public void updateFirstUser(String name, String newName) {
46+
Query query = new Query();
47+
query.addCriteria(Criteria.where("name").is(name));
48+
Update update = new Update();
49+
update.set("name", newName);
50+
mongoTemplate.updateFirst(query, update, User.class);
51+
}
52+
53+
public WriteResult upsertUser(String name, String newName) {
54+
Query query = new Query();
55+
query.addCriteria(Criteria.where("name").is(name));
56+
Update update = new Update();
57+
update.set("name", newName);
58+
return mongoTemplate.upsert(query, update, User.class);
59+
}
60+
61+
public void updateMultiUser(String name, String newName) {
62+
Query query = new Query();
63+
query.addCriteria(Criteria.where("name").is(name));
64+
Update update = new Update();
65+
update.set("name", newName);
66+
mongoTemplate.updateMulti(query, update, User.class);
67+
}
68+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<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"
3+
xmlns:p="http://www.springframework.org/schema/p"
4+
xsi:schemaLocation="
5+
http://www.springframework.org/schema/beans
6+
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
7+
http://www.springframework.org/schema/context
8+
http://www.springframework.org/schema/context/spring-context-3.2.xsd"
9+
>
10+
11+
<context:component-scan base-package="org.baeldung"/>
12+
13+
<bean id="mongo" class="org.springframework.data.mongodb.core.MongoFactoryBean">
14+
<property name="host" value="localhost"/>
15+
</bean>
16+
17+
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
18+
<constructor-arg name="mongo" ref="mongo"/>
19+
<constructor-arg name="databaseName" value="test"/>
20+
</bean>
21+
22+
<bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"/>
23+
24+
</beans>
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
2+
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
3+
version="2.5"
4+
>
5+
6+
<servlet>
7+
<servlet-name>dispatcher</servlet-name>
8+
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
9+
<load-on-startup>1</load-on-startup>
10+
</servlet>
11+
12+
<servlet-mapping>
13+
<servlet-name>dispatcher</servlet-name>
14+
<url-pattern>/</url-pattern>
15+
</servlet-mapping>
16+
17+
<context-param>
18+
<param-name>contextConfigLocation</param-name>
19+
<param-value>/WEB-INF/dispatcher-servlet.xml</param-value>
20+
</context-param>
21+
22+
<listener>
23+
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
24+
</listener>
25+
26+
</web-app>

0 commit comments

Comments
 (0)