starter-data-mongodb

pom依赖

<!--mongo依赖-->
<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>

mongodb yml连接信息

spring:
  data:
    mongodb:
      uri: mongodb://admin:admin@192.168.98.128:27017/articledb?authSource=admin

springboot主方法

不需要排除mongodb,使用spring自带的mongo连接

@SpringBootApplication
@Slf4j
public class SpringbootApplication {
    public static void main(String[] args) {  SpringApplication.run(SpringbootApplication.class, args);
    }
}

mongo实体类

对应具体mongo collection

@Document(collection  = "BalanceTest") //集合名称
@Data
public class BalanceEntity implements Serializable {
    //主键标识,该属性的值会自动对应MongoDB的主键字段_id,如果该属性名就叫"id"则该注解可以省略,否则必须写
    @Id //主键
    private String id;
    //该属性对应MongoDB字段的名字,如果一致,则无需该注解
    @Field("articleid")
    private int articleId;
    private String content;
    private Date createTime;
}

dao层

MongoRepository<T, ID>中ID为主键类型

//MongoRepository<T, ID>中ID为主键类型
public interface BalanceRepository extends MongoRepository<BalanceEntity, String> {

    //ArticleId为需要查询的字段
    Page<BalanceEntity> findByArticleId(String parentid,Pageable pageable);
}

service层

调用dao层或者使用mongoTemplate方法

import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
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.Service;
@Service
public class BalanceService {
    @Autowired
    private BalanceRepository balanceRepository;

    @Autowired
    private MongoTemplate mongoTemplate;

    public void saveBalance(BalanceEntity balanceEntity) {
        balanceRepository.save(balanceEntity);
    }

    public void updateBalance(BalanceEntity balanceEntity) {
        balanceRepository.save(balanceEntity);
    }

    /**
     * 根据id删除评论
     */
    public void deleteCommentById(String id){
        //调用dao
        balanceRepository.deleteById(id);
    }

    /**
     * 查询所有评论
     */
    public List<BalanceEntity> findCommentList(){
        //调用dao
        return balanceRepository.findAll();
    }

    /**
     * 根据id查询评论
     */
    public BalanceEntity findCommentById(String id){
        //调用dao
        return balanceRepository.findById(id).get();
    }

    /**
     * 分页条件查询
     */
    public Page<BalanceEntity> findByArticleId(String articleId, int page, int size) {
        return balanceRepository.findByArticleId(articleId,PageRequest.of(page-1,size));
    }

    /**
     * 自增更新
     */
    public void updateIncrementArticleId(String id){
        //  查询条件
        Query query = Query.query(Criteria.where("_id").is(id));
        //  更新条件
        Update update = new Update();
        //需要自增的字段
        update.inc("articleId");
        mongoTemplate.updateFirst(query,update,BalanceEntity.class);
    }
}

测试类,调用server层

@RunWith(SpringRunner.class)
@SpringBootTest
public class BalanceServiceTest {

    @Autowired
    private BalanceService balanceService;

    @Test
    public void testFindCommentList() {
        List<BalanceEntity> commentList = balanceService.findCommentList();
        System.out.println(commentList);
    }

    @Test
    public void testFindCommentById() {
        BalanceEntity commentById = balanceService.findCommentById("672f82baba8fda7d061e2097");
        System.out.println(commentById);
    }

    @Test
    public void testSaveComment(){
        BalanceEntity balanceEntity =new BalanceEntity();
        balanceEntity.setContent("测试添加的数据");
        balanceEntity.setCreateTime(new Date());
        balanceEntity.setArticleId(1003);

        balanceService.saveBalance(balanceEntity);

    }

    @Test
    public void findByArticleId() {
        Page<BalanceEntity> page = balanceService.findByArticleId("3", 1, 2);
        System.out.println(page.getTotalElements());
        System.out.println(page.getContent());
    }

    @Test
    public void updateIncrementArticleId() {
        balanceService.updateIncrementArticleId("67657f30c1e6c51645a0be55");
    }
}
Spring Boot Starter Data MongoDB Reactive 是一个用于构建响应式(Reactive)应用程序的库,它提供了对MongoDB数据库的非阻塞访问。这个库是Spring Data项目的一部分,专门用于与MongoDB进行交互。 在Spring Boot中,使用spring-boot-starter-data-mongodb-reactive可以简化开发过程,因为它自动配置了所需的依赖和设置,使得开发者能够快速开始使用MongoDB进行数据操作。 主要特点包括: 1. **响应式编程模型**:支持Reactor框架,允许以非阻塞的方式处理数据流,这对于需要高并发处理的应用非常有用。 2. **自动配置**:通过简单的配置即可连接到MongoDB数据库,无需手动设置连接参数。 3. **集成Spring Data MongoDB**:利用Spring Data MongoDB的功能,如Repository抽象、查询方法等,简化数据访问层的开发。 4. **灵活的数据映射**:支持复杂的数据映射需求,可以将MongoDB文档映射到Java对象。 要使用spring-boot-starter-data-mongodb-reactive,首先需要在项目的pom.xml文件中添加相应的依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb-reactive</artifactId> </dependency> ``` 然后,可以通过定义接口继承`ReactiveMongoRepository`来创建数据访问层,该接口提供了一系列用于操作MongoDB的方法,如save(), findById(), delete()等。 总之,spring-boot-starter-data-mongodb-reactive为开发者提供了一个强大且易于使用的工具,用于在Spring Boot应用中实现对MongoDB的响应式数据访问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值