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:admin@192.168.98.128: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");
    }
}
相关推荐
焦虑的说说17 小时前
redis和数据库的一致性如何保证
数据库·redis·缓存
阿狸猿18 小时前
论基于云原生数据库的企业信息系统架构设计
数据库·云原生
MXsoft61819 小时前
**配置自动备份与变更告警:杜绝“黑变更”风险**
网络·数据库
骑士雄师19 小时前
19.3 langgraph的工作节点和路由函数
java·前端·数据库
梓䈑19 小时前
C++ 接入 SQLite 数据库:环境搭建、API 详解 与 两种执行方式对比
数据库·c++·sqlite
曹牧20 小时前
Oracle:CHR
数据库·oracle
TechWayfarer20 小时前
IP精准定位服务在保险行业的接入实践:区域需求洞察与精准服务
数据库·python·tcp/ip·flask
KKKlucifer20 小时前
数据分类分级产品排名解析:场景定制、规则联动、增量更新成核心能力
大数据·数据库·人工智能
minji...20 小时前
MySQL数据库 (七) MySQL表的基本查询(上),insert、replace、select、where、order by
数据库·mysql·select·replace·insert·order by·where
金融RPA机器人丨实在智能20 小时前
数据库运维Agent比价指南:国产自研产品适配国产数据库兼容性更好吗?
运维·数据库·人工智能·ai