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

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

内容简介: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

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

查看所有标签

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

Professional JavaScript for Web Developers

Professional JavaScript for Web Developers

Nicholas C. Zakas / Wrox / 2009-1-14 / USD 49.99

This eagerly anticipated update to the breakout book on JavaScript offers you an in-depth look at the numerous advances to the techniques and technology of the JavaScript language. You'll see why Java......一起来看看 《Professional JavaScript for Web Developers》 这本书的介绍吧!

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具