集成簡介
spring-data-mongodb提供了MongoTemplate與MongoRepository兩種方式訪問mongodb,MongoRepository操作簡單,MongoTemplate操作靈活,我們在項目中可以靈活適用這兩種方式操作mongodb,MongoRepository的缺點是不夠靈活,MongoTemplate正好可以彌補不足。
搭建開發環境
1、創建springboot項目
2、導入依賴
<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-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.10.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
3 添加application配置
spring.data.mongodb.uri=mongodb://192.168.217.128:27017/test
4.添加實體
@Data
@Document("User")
public class User {
@Id
private String id;
private String name;
private Integer age;
private String email;
private String createDate;
}
添加操作
package com.study;
import com.study.mongodb.entiity.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.mongodb.core.MongoTemplate;
@SpringBootTest
class SpringbootMongoDbApplicationTests {
//注入mongoTemplate
@Autowired
private MongoTemplate mongoTemplate;
//添加操作
@Test
void create() {
User user = new User();
user.setAge(20);
user.setName("zhangsan");
user.setEmail("963330213@qq.com");
User insert = mongoTemplate.insert(user);
System.out.println(insert);
}
}
查詢操作
1.查詢所有
//查詢所有
@Test
public void findAll(){
List<User> userList = mongoTemplate.findAll(User.class);
System.out.println(userList);
}
2.根據id查詢
//根據id查詢
@Test
public void findId(){
User user = mongoTemplate.findById("611a1cf8d5ba747098ff4625", User.class);
System.out.println(user);
}
3.條件查詢
//條件查詢
@Test
public void findUserList(){
//name = zhangsan and age =20
Query query = new Query(Criteria.where("name").is("zhangsan").and("age").is(20));
List<User> userList = mongoTemplate.find(query, User.class);
System.out.println(userList);
}
4.模糊查詢
//模糊查詢
@Test
public void findLikeUserList(){
//name like zhangsan
//regex(Pattern)正則表達式
String name = "hangsan";
String regex = String.format("%s%s","^.*",name);
Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
Query query = new Query(Criteria.where("name").regex(pattern));
List<User> userList = mongoTemplate.find(query, User.class);
System.out.println(userList);
}
5.分頁查詢
//分頁查詢
@Test
public void findPageUserList(){
int pageNo = 1;
int pageSize = 3;
//條件構建
String name = "hangsan";
String regex = String.format("%s%s","^.*",name);
Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
Query query = new Query(Criteria.where("name").regex(pattern));
//分頁構建
//查詢記錄數
long count = mongoTemplate.count(query, User.class);
//分頁
List<User> userList = mongoTemplate.find(query.skip((pageNo - 1) * pageSize).limit(pageSize), User.class);
System.out.println(count);
System.out.println(userList);
}
修改操作
//修改
@Test
public void updateUser(){
//根據id查詢數據
User user = mongoTemplate.findById("611a1cf8d5ba747098ff4625", User.class);
//設置修改的值
user.setName("lisi");
user.setAge(18);
//調用方法實現修改操作
Query query = new Query(Criteria.where("_id").is(user.getId()));
Update update = new Update();
update.set("name",user.getName());
update.set("age",user.getAge());
UpdateResult upsert = mongoTemplate.upsert(query, update, User.class);
long count = upsert.getModifiedCount();
System.out.println(count);
}
刪除操作
//刪除操作
@Test
public void deleteUser(){
Query query = new Query(Criteria.where("_id").is("611a1cf8d5ba747098ff4625"));
DeleteResult remove = mongoTemplate.remove(query, User.class);
long deletedCount = remove.getDeletedCount();
System.out.println(deletedCount);
}