pom文件
<?xml version="1.0" encoding="UTF-8"?>
<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">
<modelVersion>4.0.0
</modelVersion>
<parent>
<groupId>org.springframework.boot
</groupId>
<artifactId>spring-boot-starter-parent
</artifactId>
<version>2.3.3.RELEASE
</version>
</parent>
<groupId>com.sunyuqi.mongodb
</groupId>
<artifactId>java-mongodb
</artifactId>
<version>1.0-SNAPSHOT
</version>
<dependencies>
<dependency>
<groupId>org.springframework.boot
</groupId>
<artifactId>spring-boot-starter-data-mongodb
</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot
</groupId>
<artifactId>spring-boot-starter-test
</artifactId>
<scope>test
</scope>
</dependency>
<dependency>
<groupId>org.projectlombok
</groupId>
<artifactId>lombok
</artifactId>
<version>1.18.12
</version>
</dependency>
</dependencies>
</project>
application.properties配置文件
spring.data.mongodb.uri=mongodb://192.168.130.128:27017/testdb
实体类User和Address
User
package com
.sunyuqi
.mongodb
.pojo
;
import lombok
.AllArgsConstructor
;
import lombok
.Data
;
import lombok
.NoArgsConstructor
;
import org
.bson
.types
.ObjectId
;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private ObjectId id
;
private String name
;
private int age
;
private Address address
;
}
Address
package com
.sunyuqi
.mongodb
.pojo
;
import lombok
.AllArgsConstructor
;
import lombok
.Data
;
import lombok
.NoArgsConstructor
;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Address {
private String street
;
private String city
;
private String zip
;
}
编写UserDao
package com
.sunyuqi
.mongodb
.dao
;
import com
.mongodb
.client
.result
.DeleteResult
;
import com
.mongodb
.client
.result
.UpdateResult
;
import com
.sunyuqi
.mongodb
.pojo
.User
;
import org
.springframework
.beans
.factory
.annotation
.Autowired
;
import org
.springframework
.data
.mongodb
.core
.MongoTemplate
;
import org
.springframework
.data
.mongodb
.core
.query
.Criteria
;
import org
.springframework
.data
.mongodb
.core
.query
.Query
;
import org
.springframework
.data
.mongodb
.core
.query
.Update
;
import org
.springframework
.stereotype
.Component
;
import java
.util
.List
;
@Component
public class UserDAO {
@Autowired
private MongoTemplate mongoTemplate
;
public User
saveUser(User user
){
return this.mongoTemplate
.save(user
);
}
public List
<User> queryUserListByName(String name
) {
Query query
= Query
.query(Criteria
.where("name").is(name
));
return this.mongoTemplate
.find(query
, User
.class);
}
public List
<User> queryUserListByNameAndAge(String name
,int age
){
Query query
= Query
.query(Criteria
.where("name").is(name
).andOperator(Criteria
.where("age").is(age
)));
return this.mongoTemplate
.find(query
,User
.class);
}
public List
<User> queryPageUserList(Integer page
, Integer rows
) {
Query query
= new Query().limit(rows
).skip((page
- 1) * rows
);
return this.mongoTemplate
.find(query
, User
.class);
}
public UpdateResult
update(User user
) {
Query query
= Query
.query(Criteria
.where("id").is(user
.getId()));
Update update
= Update
.update("age", user
.getAge());
return this.mongoTemplate
.updateFirst(query
, update
, User
.class);
}
public DeleteResult
deleteById(String id
) {
Query query
= Query
.query(Criteria
.where("id").is(id
));
return this.mongoTemplate
.remove(query
, User
.class);
}
}
编写启动类
package com
.sunyuqi
.mongodb
;
import org
.springframework
.boot
.SpringApplication
;
import org
.springframework
.boot
.autoconfigure
.SpringBootApplication
;
@SpringBootApplication
public class MongoApplication {
public static void main(String
[] args
) {
SpringApplication
.run(MongoApplication
.class, args
);
}
}
编写单元测试
package com
.sunyuqi
.mongodb
;
import com
.sunyuqi
.mongodb
.dao
.UserDAO
;
import com
.mongodb
.client
.result
.DeleteResult
;
import com
.mongodb
.client
.result
.UpdateResult
;
import com
.sunyuqi
.mongodb
.pojo
.Address
;
import com
.sunyuqi
.mongodb
.pojo
.User
;
import org
.bson
.types
.ObjectId
;
import org
.junit
.Test
;
import org
.junit
.runner
.RunWith
;
import org
.springframework
.beans
.factory
.annotation
.Autowired
;
import org
.springframework
.boot
.test
.context
.SpringBootTest
;
import org
.springframework
.test
.context
.junit4
.SpringRunner
;
import java
.util
.List
;
@RunWith(SpringRunner
.class)
@SpringBootTest(classes
= MongoApplication
.class)
public class TestSpringUser {
@Autowired
private UserDAO userDAO
;
@Test
public void testSave(){
User user
= new User(ObjectId
.get(), "爱德华", 58,new Address("香港南路", "香港市", "666666"));
this.userDAO
.saveUser(user
);
}
@Test
public void testQueryUserListByName(){
List
<User> list
= this.userDAO
.queryUserListByName("爱德华");
for (User user
: list
) {
System
.out
.println(user
);
}
}
@Test
public void testQueryUserListByNameAndAge(){
List
<User> list
= this.userDAO
.queryUserListByNameAndAge("爱德华",50);
for (User user
: list
) {
System
.out
.println(user
);
}
}
@Test
public void testQueryPageUserList(){
List
<User> list
= this.userDAO
.queryPageUserList(1, 2);
for (User user
: list
) {
System
.out
.println(user
);
}
}
@Test
public void testUpdatae(){
List
<User> users
= this.userDAO
.queryUserListByName("爱德华");
User user
= users
.get(0);
user
.setAge(60);
UpdateResult update
= this.userDAO
.update(user
);
System
.out
.println(update
);
}
@Test
public void testDelete(){
DeleteResult deleteResult
= this.userDAO
.deleteById("5f903d602b935e26d7fae98c");
System
.out
.println(deleteResult
);
}
}