推荐 MongoDB 访问工具 mongoHelper

推荐 MongoDB 访问工具 mongoHelper,简化 mongdb 操作。

mongoHelper 是 spring-data-mongodb 增强工具包,简化 CRUD 操作,提供类 mybatis plus 的数据库操作。

传统关系型数据库及围绕它们构建的 ORM 在项目开发中有很多难用的痛点,而 mongodb 这种文档性数据库的出现,完美的解决了 SQL 数据库在项目开发中的诸多痛点,在 mongodb4.0 以后支持了事务,已经可以完美的用于工程项目。

spring-data-mongodb 已经对 mongodb 的操作做了一部分封装,但依然不够,Query Criteria Sort 的操作依然有比较大的局限性,而且对于习惯 SQL 操作的人来说,理解其使用法则依然稍显别扭。

mongoHelper 对 spring-data-mongodb 又进行了进一步封装,使其更易于使用,并添加了很多易于项目管理的功能。

软件架构

本项目只适用于springBoot项目,项目也依赖springBoot相关库,springMVC 项目无法使用,另外项目依赖了 hutool 提供的诸多 Util 工具,让代码更简洁。

演示应用项目:https://gitee.com/cym1102/mongoStudy 

安装教程

引入maven库

<dependency>
    <groupId>cn.craccd</groupId>
    <artifactId>mongoHelper</artifactId>
    <version>0.6.2</version>
</dependency>

配置 application.yml

spring:
  data:
    mongodb:
      uri: mongodb://user:pass@host:27017/study?replicaSet=rs0&authSource=admin&w=majority&j=true&wtimeout=5000&readPreference=primary
      print: true #是否打印查询语句
      slowQuery: true #是否记录慢查询到数据库中
      slowTime: 1000 #慢查询最短时间,默认为1000毫秒

添加 MongoConfig 配置类

@Configuration
@ComponentScan(basePackages = {"cn.craccd"}) // 必须填写此包路径
public class MongoConfig {
    // 开启事务(如使用单机mongodb,可不配置此@Bean)
    @Bean
    public MongoTransactionManager transactionManager(MongoDatabaseFactory dbFactory) {
        return new MongoTransactionManager(dbFactory);
    }
}

在 springBoot 主运行类中加入@EnableTransactionManagement 注解开启事务(如使用单机 mongodb,可不配置此项)

注意:

mongodb 必须在集群配置下才能支持事务,本 ORM 可以在集群mongodb 下使用,也可以在单机 mongodb 下使用,但事务只能在集群下才起作用;

单机下使用事务会报错,mongodb 集群配置请查阅相关文档,如果业务量不大,可以配置一个单一实例集群,同样可支持事务。

springBoot 配置文件 application.yml 中 spring.data.mongodb.uri 如果配置为集群 uri。如:

mongodb://user:pass@host:27017/electric?replicaSet=rs0&authSource=admin&w=majority&j=true&wtimeout=5000&readPreference=primary

使用说明

基本操作

本 ORM 会在容器中注入一个对象 MongoHelper,这个对象拥有诸多单表查询功能,如下:

  • 按id删除:deleteById(String, Class<?>)

  • 按条件删除:deleteByQuery(Criteria, Class<?>)

  • 查询所有:findAll(Class)

  • 查询数量:findCount(Class<?>)

  • 根据id查询:findById(String, Class)

  • 根据条件查询:findListByQuery(Criteria, Class<?>)

  • 根据条件查询并分页:findPage(Criteria, Page, Class<?>)

  • 插入:insert(Object)

  • 插入或更新:insertOrUpdate(Object)

  • 根据id更新:updateById(Object)

  • 根据id更新全部字段:updateAllColumnById(Object)

  • 根据条件更新第一项:updateFirst(Criteria, Update, Class<?>)

  • 根据条件更新所有项:updateMulti(Criteria, Update, Class<?>)

  • 累加某一个字段的数量, 原子操作:addCountById(String id, String property, Long count, Class<?> clazz)

更多请访问:https://gitee.com/cym1102/mongoHelper

一个不注意小事情的人,永远不会成功大事业。——戴尔·卡耐基
0 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号