qdbp-jdbc 数据库 ORM 框架开源项目

我要开发同款
匿名用户2020年11月09日
28阅读
开发技术Java
所属分类数据库相关、数据库管理工具
授权协议Apache 2.0

作品详情

qdbp-jdbc简称为qdbc,是一个数据库ORM框架,底层基于Spring的JdbcTemplate,完善之后希望可以成为MyBatis的替代品。

为什么会有这个项目?因为现有的框架用得不够爽:(更多讨论见《ORM框架的痛点讨论》)

Hibernate太重量级,学习成本高,用得不好容易出现性能问题;Spring的JdbcTemplate太基础,只做了预编译参数和结果映射;MyBatis要生成一大堆xml文件,难以维护,尤其表结构变更时,重新生成的xml就需要跟以前的比对,很是麻烦;即使有MyBatisGenerator之类的工具来辅助生成代码,但由于代码是提前生成的,结构变更时依然麻烦;还有一个问题,所有的框架输出预编译参数的SQL日志都是用问号代替参数,如果参数很多,根据日志到数据库中重现问题的时候简直痛苦。特点和独创内容特点:对于单表增删改查,以及涉及的大于/小于/不等于/like/in等条件,不需要写sql或xml《基本用法简介》特点:多表关联基础查询,以及涉及的大于/小于/不等于/like/in等条件,不需要写sql或xml《表关联查询》特点:集成全局业务处理接口提供公共字段(创建人/创建时间/修改人/修改时间/租户隔离等)的赋值接口。集成逻辑删除解决方案。《逻辑删除数据状态填充策略》集成数据权限解决方案。《关于数据权限的解决思路》特点:集成兼容多种数据库的常用操作兼容多种数据库的批量新增crudDao.inserts()、批量修改crudDao.updates()方法兼容多种数据库的递归查找子节点的方法crudDao.listChildren()独创:SqlBuffer,一行内实现SQL文本与变量的统一:《关于代码中SQL书写方式的思考》独创:日志中打印的SQL,复制到数据库就能执行:《SQL日志问题排查的痛点》独创:批量日志采样,批量操作日志只能在开启或关闭之间二选一?《关于批量日志的思考》独创:SQL模板中不仅可以判断数据库类型,还可以判断数据库版本:《多数据库方言支持》SQL模板优化

复杂的查询或统计,还是要写sql或xml:

一是因为太复杂无法封装,强行封装就会变成hibernate,学习成本骤升,得不偿失;二是独立SQL方便DBA审查,而恰恰只有这部分复杂语句才是需要审查的。

这方面也存在一些优化点:

MyBatis中大量的单表增删改查语句也要用到SQL模板,对DBA审查来说只是一种干扰,并不会过多关注;多种数据库就需要多套模板,但实际情况往往是多套模板大体相同,只有少量差异;SQL模板首先应该是SQL,然后其中有一些XML的判断条件和循环语句,而不应该是XML格式。

详见《SQL模板说明》。

版本说明

JDK支持jdk1.7+数据库:MySQL、Oracle、DB2,做了较完整的测试。详见《多数据库方言支持》的【数据库类型测试】

POM依赖

https://mvnrepository.com/artifact/com.gitee.qdbp/qdbp-jdbc-spring

<dependency><groupId>com.gitee.qdbp</groupId><artifactId>qdbp-jdbc-spring</artifactId><version>3.2.6</version></dependency>

如果不是spring-web项目,可以单独使用qdbp-jdbc-corehttps://mvnrepository.com/artifact/com.gitee.qdbp/qdbp-jdbc-core

<dependency><groupId>com.gitee.qdbp</groupId><artifactId>qdbp-jdbc-core</artifactId><version>3.2.6</version></dependency>

 

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论