springboot+MongoDB 增删改查

本文详细介绍了如何在Spring Boot项目中集成MongoDB,包括配置、实体类定义、基本CRUD操作及分页查询的实现。通过实例演示了数据的增删改查和分页功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

MongoDB在windows上安装的时候,左下角的勾选不要勾,会卡很久。。

 

pom.xml  

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </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>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
        </dependency>

        <!--mongodb-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.41</version>
        </dependency>

    </dependencies>

 

application.properties  :

spring.data.mongodb.uri=mongodb://localhost:27017/db

 

新建 user.java

 

package com.example.demo.bean;

import org.springframework.data.annotation.Id;

/**
 * @Date 2020/8/7 17:03
 * @Created by wbb
 * @Used for
 */
public class user {

    @Id
    private String id;
    private String name;
    private String gender;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }
}

 

控制层依赖注入

@Resource
private MongoTemplate mongoTemplate;

 

新增:

@RequestMapping("/insert")
    public String insert(){
        user u=new user();
        u.setId("789");
        u.setName("wbb");
        u.setGender("男");
        mongoTemplate.insert(u);
        return "/test/test";
    }

 

批量插入:

@RequestMapping("/insertAll")
    public String insertAll(){
        List<user> newList=new ArrayList<>();
        for(int i=0;i<30;i++){
            user u=new user();
            u.setId(UUID.randomUUID().toString());
            u.setName("wbb");
            u.setGender("男");
            newList.add(u);
        }
        mongoTemplate.insertAll(newList);
        return "/test/test";
    }

 

查询 返回一条数据:

@RequestMapping("/findone")
    public String findone(){
        Query query=new Query(Criteria.where("id").is("123"));
        user u=mongoTemplate.findOne(query,user.class);
        System.out.println(JSON.toJSONString(u));
        return "/test/test";
    }

 

查询返回多条数据:

 @RequestMapping("/findAll")
    public String findAll(){
        Query query=new Query(Criteria.where("name").is("王冰冰"));
        List<user> u=mongoTemplate.find(query,user.class);
        System.out.println(JSON.toJSONString(u));
        return "/test/test";
    }

 

修改:

@RequestMapping("/update")
    public String update(){
        Query query=new Query(Criteria.where("id").is("123"));
        Update update= new Update().set("name", "东北吴彦祖").set("gender","老男人");
        //更新查询返回结果集的第一条
        mongoTemplate.updateFirst(query,update,user.class);
        //更新查询返回结果集的所有
        // mongoTemplate.updateMulti(query,update,TestEntity.class);
        return "/test/test";
    }

 

删除:

@RequestMapping("/delete")
    public String delete(){
        Query query=new Query(Criteria.where("id").is("123"));
        mongoTemplate.remove(query,user.class);
        return "/test/test";
    }

 

分页查询 :

@RequestMapping("/findPage")
    public String findPage(){
        //利用工具类拼装分页信息
        SpringbootMongoDBPageable pageable = new SpringbootMongoDBPageable();
        MongoDBPageModel pm=new MongoDBPageModel();
        pm.setPagesize(3); // 每页 3条
        pm.setPagenumber(2); // 第 2 页

        List<Sort.Order> orders = new ArrayList<>();  //排序信息
        orders.add(new Sort.Order(Sort.Direction.DESC, "id"));// 按照 id 倒序排列
        pm.setSort(Sort.by(orders));

        pageable.setPage(pm);
        //拼装查询信息
        Query query = new Query();
        Criteria criteria = new Criteria();
        query.addCriteria(criteria.where("name").is("wbb"));  // 条件 name= wbb
        //查询总记录数
        List<user> list = mongoTemplate.find(query.with(pageable), user.class);
        System.out.println(JSON.toJSONString(list));
        return "/test/test";
    }

 

分页需要的工具类:

参考地址: https://blog.csdn.net/weixin_39804646/article/details/82155898#commentBox

import org.springframework.data.domain.Sort;

import java.io.Serializable;

/**
 * @Auther:
 * @Date: 2018/8/22 08:48
 * @Description:
 * @Version: 1.0
 */
public class MongoDBPageModel implements Serializable {
    /**
     * @Fields: serialVersionUID
     * @Todo: TODO
     */
    private static final long serialVersionUID = 1L;
    // 当前页
    private Integer pagenumber = 1;
    // 当前页面条数
    private Integer pagesize = 10;
    // 排序条件
    private Sort sort;
    public Integer getPagenumber() {
        return pagenumber;
    }
    public void setPagenumber(Integer pagenumber) {
        this.pagenumber = pagenumber;
    }
    public Integer getPagesize() {
        return pagesize;
    }
    public void setPagesize(Integer pagesize) {
        this.pagesize = pagesize;
    }
    public Sort getSort() {
        return sort;
    }
    public void setSort(Sort sort) {
        this.sort = sort;
    }

}

 


import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;

import java.io.Serializable;
/**
 * @Auther:
 * @Date: 2018/8/22 10:19
 * @Description:
 * @Version: 1.0
 */
public class SpringbootMongoDBPageable implements Serializable,Pageable{
    /**
     * @Fields: serialVersionUID
     * @Todo: TODO
     */
    private static final long serialVersionUID = 1L;

    MongoDBPageModel page;

    public MongoDBPageModel getPage() {
        return page;
    }

    public void setPage(MongoDBPageModel page) {
        this.page = page;
    }

    @Override
    public Pageable first() {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public long getOffset() {
        // TODO Auto-generated method stub
        return (page.getPagenumber() - 1) * page.getPagesize();
    }

    @Override
    public int getPageNumber() {
        // TODO Auto-generated method stub
        return page.getPagenumber();
    }

    @Override
    public int getPageSize() {
        // TODO Auto-generated method stub
        return page.getPagesize();
    }


    @Override
    public boolean hasPrevious() {
        // TODO Auto-generated method stub
        return false;
    }

    @Override
    public Pageable next() {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public Pageable previousOrFirst() {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public Sort getSort() {
        // TODO Auto-generated method stub
        return page.getSort();
    }
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值