清风入怀 發表於 2021-8-16 17:17:00

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">&lt;dependencies&gt;
    &lt;dependency&gt;
      &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
      &lt;artifactId&gt;spring-boot-starter-data-mongodb&lt;/artifactId&gt;
    &lt;/dependency&gt;
    &lt;dependency&gt;
      &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
      &lt;artifactId&gt;spring-boot-starter-web&lt;/artifactId&gt;
    &lt;/dependency&gt;

    &lt;dependency&gt;
      &lt;groupId&gt;org.projectlombok&lt;/groupId&gt;
      &lt;artifactId&gt;lombok&lt;/artifactId&gt;
    &lt;/dependency&gt;

    &lt;dependency&gt;
      &lt;groupId&gt;joda-time&lt;/groupId&gt;
      &lt;artifactId&gt;joda-time&lt;/artifactId&gt;
      &lt;version&gt;2.10.1&lt;/version&gt;
    &lt;/dependency&gt;

    &lt;dependency&gt;
      &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
      &lt;artifactId&gt;spring-boot-starter-test&lt;/artifactId&gt;
      &lt;scope&gt;test&lt;/scope&gt;
      &lt;exclusions&gt;
            &lt;exclusion&gt;
                &lt;groupId&gt;org.junit.vintage&lt;/groupId&gt;
                &lt;artifactId&gt;junit-vintage-engine&lt;/artifactId&gt;
            &lt;/exclusion&gt;
      &lt;/exclusions&gt;
    &lt;/dependency&gt;
&lt;/dependencies&gt;
</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&lt;User&gt; 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&lt;User&gt; 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&lt;User&gt; 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&lt;User&gt; 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]
查看完整版本: MongoDB(四)——MongoTemplate操作MongoDB