mongoHelper 0.6.2 发布,用于 mongodb 的 ORM 框架

栏目: 软件资讯 · 发布时间: 3年前

内容简介:mongoHelper 是基于 spring-data-mongodb 的增强ORM工具包,简化 CRUD 操作,提供类似于mybatis plus的mongodb数据库操作。 虽然spring-data-mongodb已经对mongodb的操作做了一部分封装,但易用性依然不够,Query...

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

虽然spring-data-mongodb已经对mongodb的操作做了一部分封装,但易用性依然不够,Query Criteria Sort的操作依然有比较大的局限性,而且对于习惯 sql 操作的人来说,理解其使用法则依然稍显别扭。mongoHelper对spring-data-mongodb又进行了进一步封装,使其更易于使用。对使用过mybatis plus的开发者来说,其用法应该不会陌生。使用 java 对象构建查询条件,不再写sql的敏捷开发体验,mongoHelper正是基于这个理念开发的。

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

基本用法:

本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)

这个mongoHelper能够完成所有查询任务,插入和更新操作能够自动判断pojo的类型操作对应表,查询操作根据传入的Class进行对应表操作,本orm所有数据库操作都基于mongoHelper的功能,不用像mybatis一样,每个表都要建立一套Mapper,xml,Service,model,大大减少数据层的代码量。可以将mongoHelper直接注入到controller层,简单的操作直接调用mongoHelper进行操作,不需要调用service层。

而复杂的操作及事务处理需要service层,将mongoHelper注入service,并使用service层的@Transactional注解就能使用springBoot管理的事务功能。

打印查询语句:

spring-data-mongodb默认的打印语句方式为修改配置文件logging.level.root: debug。但这里打印出来的语句基本不可读,也不能像sql一样直接复制出来到数据库中进行执行,处于集群模式下还每隔数秒发送一次检测当前数据库isMaster的命令,很干扰debug。本orm重写了查询语句的打印功能,只要配置spring.data.mongodb.print:true就能打印出如下的语句:

db.admin.find({
    "$and": [
        {
            "name": {
                "$regex": "^.*ad.*$",
                "$options": "i"
            }
        }
    ]
}).projection({
    "name": 1
}).sort({
    "id": -1
});

可直接复制到mongodb客户端中进行执行,非常方便调试。

多数据源:

如果需要连接两个以上的mongodb数据库,可先在yml文件中配一个uri2:

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

再配置一个MongoHelper2类继承MongoHelper:

@Service("mongoHelper2")
public class MongoHelper2 extends MongoHelper {

	@Value("${spring.data.mongodb.uri2}")
	String uri2;

	@PostConstruct
	public void init() {
		// 使用uri2初始化mongoTemplate,不支持事务
		this.mongoTemplate = new MongoTemplate(new SimpleMongoClientDatabaseFactory(uri2));

		super.init();
	}
}

这样,注入MongoHelper2进行增删改查的操作就会被执行到uri2的数据库上

获取原生mongoTemplate:

如果觉得MongoHelper的方法无法满足项目需求, 可以用mongoHelper.getMongotemplate()的方式获取springboot原生的mongotemplate对象进行操作。

 

本次更新内容:

  1. 修正一些编码规范,减少代码警告数量
  2. 添加多数据源功能
  3. 添加@createTime和@updateTime注解功能 ,可自动插入更新时间和修改时间
  4. 更新springBoot版本, 增加支持mongodb 5.0
  5. 修复大量bug

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

计算机科学概论(第12版)

计算机科学概论(第12版)

[美] J.Glenn Brookshear、[美] Dennis Brylow / 刘艺、吴英、毛倩倩 / 人民邮电出版社 / 2017-1 / 69.00

《计算机科学概论》是计算机科学概论课程的经典教材,全书对计算机科学做了百科全书式的精彩阐述,充分展现了计算机科学的历史背景、发展历程和新的技术趋势。《计算机科学概论》首先介绍的是信息编码及计算机体系结构的基本原理,进而讲述操作系统和组网及因特网,接着探讨算法、程序设计语言及软件工程,然后讨论数据抽象和数据库方面的问题,讲述图形学的一些主要应用以及人工智能,以计算理论的介绍结束全书。《计算机科学概论......一起来看看 《计算机科学概论(第12版)》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换