starter-data-mongodb

pom依赖

java 复制代码
<!--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连接信息

java 复制代码
spring:
  data:
    mongodb:
      uri: mongodb://admin:[email protected]:27017/articledb?authSource=admin

springboot主方法

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

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

mongo实体类

对应具体mongo collection

java 复制代码
@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为主键类型

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

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

service层

调用dao层或者使用mongoTemplate方法

java 复制代码
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层

java 复制代码
@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");
    }
}
相关推荐
欧先生^_^6 小时前
Linux内核可配置的参数
linux·服务器·数据库
问道飞鱼6 小时前
【数据库知识】Mysql进阶-高可用MHA(Master High Availability)方案
数据库·mysql·adb·高可用·mha
tiging6 小时前
centos7.x下,使用宝塔进行主从复制的原理和实践
数据库·mysql·adb·主从复制
wangcheng86997 小时前
Oracle常用函数-日期时间类型
数据库·sql·oracle
zizisuo7 小时前
面试篇:Spring Security
网络·数据库·安全
一只fish7 小时前
MySQL 8.0 OCP 1Z0-908 题目解析(2)
数据库·mysql
StarRocks_labs7 小时前
从InfluxDB到StarRocks:Grab实现Spark监控平台10倍性能提升
大数据·数据库·starrocks·分布式·spark·iris·物化视图
搞不懂语言的程序员7 小时前
Redis的Pipeline和Lua脚本适用场景是什么?使用时需要注意什么?
数据库·redis·lua
王RuaRua8 小时前
[数据结构]5. 栈-Stack
linux·数据结构·数据库·链表
Lw老王要学习9 小时前
Linux数据库篇、第一章_02_MySQL的使用增删改查
linux·运维·数据库·mysql·云计算·it