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);
}
}