MongoDB(四)——MongoTemplate操作MongoDB
<p><font style="font-size: 40px"></font></p><center><font style="font-size: 40px">MongoTemplate操作MongoDB</font></center><p></p><div style="background-color: rgba(100, 149, 237, 1); font-size: 19px; border-radius: 5px"><h1>集成简介</h1></div>
<p>spring-data-mongodb提供了<strong>MongoTemplate</strong>与<strong>MongoRepository</strong>两种方式访问mongodb,MongoRepository操作简单,MongoTemplate操作灵活,我们在项目中可以灵活适用这两种方式操作mongodb,MongoRepository的缺点是不够灵活,MongoTemplate正好可以弥补不足。</p>
<div style="background-color: rgba(100, 149, 237, 1); font-size: 19px; border-radius: 5px"><h1>搭建开发环境</h1></div>
<h3 id="1创建springboot项目">1、创建springboot项目</h3>
<h3 id="2导入依赖">2、导入依赖</h3>
<pre><code class="language-xml"><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>
</code></pre>
<h3 id="3-添加application配置">3 添加application配置</h3>
<pre><code class="language-properties">spring.data.mongodb.uri=mongodb://192.168.217.128:27017/test
</code></pre>
<h3 id="4添加实体">4.添加实体</h3>
<pre><code class="language-java">@Data
@Document("User")
public class User {
@Id
private String id;
private String name;
private Integer age;
private String email;
private String createDate;
}
</code></pre>
<div style="background-color: rgba(100, 149, 237, 1); font-size: 19px; border-radius: 5px"><h1>添加操作</h1></div>
<pre><code class="language-java">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);
}
}
</code></pre>
<p><img src="https://img2020.cnblogs.com/blog/2203076/202108/2203076-20210816161356447-323304554.png" alt="image" loading="lazy"></p>
<div style="background-color: rgba(100, 149, 237, 1); font-size: 19px; border-radius: 5px"><h1>查询操作</h1></div>
<p><strong>1.查询所有</strong></p>
<pre><code class="language-java">//查询所有
@Test
public void findAll(){
List<User> userList = mongoTemplate.findAll(User.class);
System.out.println(userList);
}
</code></pre>
<p><img src="https://img2020.cnblogs.com/blog/2203076/202108/2203076-20210816161515878-657442632.png" alt="image" loading="lazy"></p>
<p><strong>2.根据id查询</strong></p>
<pre><code class="language-java">//根据id查询
@Test
public void findId(){
User user = mongoTemplate.findById("611a1cf8d5ba747098ff4625", User.class);
System.out.println(user);
}
</code></pre>
<p><img src="https://img2020.cnblogs.com/blog/2203076/202108/2203076-20210816161844517-1473451801.png" alt="image" loading="lazy"></p>
<p><strong>3.条件查询</strong></p>
<pre><code class="language-java">//条件查询
@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);
}
</code></pre>
<p><img src="https://img2020.cnblogs.com/blog/2203076/202108/2203076-20210816162604782-279172513.png" alt="image" loading="lazy"></p>
<p><strong>4.模糊查询</strong></p>
<pre><code class="language-java"> //模糊查询
@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);
}
</code></pre>
<p><img src="https://img2020.cnblogs.com/blog/2203076/202108/2203076-20210816163721983-2129770997.png" alt="image" loading="lazy"></p>
<p><strong>5.分页查询</strong></p>
<pre><code class="language-java"> //分页查询
@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);
}
</code></pre>
<p><img src="https://img2020.cnblogs.com/blog/2203076/202108/2203076-20210816165244232-1461439459.png" alt="image" loading="lazy"></p>
<div style="background-color: rgba(100, 149, 237, 1); font-size: 19px; border-radius: 5px"><h1>修改操作</h1></div>
<pre><code class="language-java"> //修改
@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);
}
</code></pre>
<p><img src="https://img2020.cnblogs.com/blog/2203076/202108/2203076-20210816171252898-1063678251.png" alt="image" loading="lazy"></p>
<p><img src="https://img2020.cnblogs.com/blog/2203076/202108/2203076-20210816171318721-785841966.png" alt="image" loading="lazy"></p>
<div style="background-color: rgba(100, 149, 237, 1); font-size: 19px; border-radius: 5px"><h1>删除操作</h1></div>
<pre><code class="language-java"> //删除操作
@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);
}
</code></pre>
<p><img src="https://img2020.cnblogs.com/blog/2203076/202108/2203076-20210816171642992-1017224209.png" alt="image" loading="lazy"></p>
<p><img src="https://img2020.cnblogs.com/blog/2203076/202108/2203076-20210816171654844-1562239021.png" alt="image" loading="lazy"></p><br><br>
来源:https://www.cnblogs.com/luoxiao1104/p/15145686.html
頁:
[1]