• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

qdbp-jdbc: qdbp-jdbc 简称为 qdbc,是一个数据库 ORM 框架,底层基于 Spring 的 Jdbc ...

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

qdbp-jdbc

开源软件地址:

https://gitee.com/qdbp/qdbp-jdbc

开源软件介绍:

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

底层没有打算自己做,目前是基于Spring的JdbcTemplate的。

https://gitee.com/qdbp/qdbp-jdbc 求star~~
https://github.com/zhaohuihua/qdbp-jdbc
https://yuque.com/zhaohuihua/qdbc 文档中心

存在的理由

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

  • Hibernate太重量级,学习成本高,用得不好容易出现性能问题;
  • Spring的JdbcTemplate太基础,只做了预编译参数和结果映射;
  • MyBatis要生成一大堆xml文件,难以维护,尤其表结构变更时,重新生成的xml就需要跟以前的比对,很是麻烦;
  • 即使有MyBatisGenerator之类的工具来辅助生成代码,但由于代码是提前生成的,结构变更时依然麻烦;
  • 还有一个问题,所有的框架输出预编译参数的SQL日志都是用问号代替参数,如果参数很多,根据日志到数据库中重现问题的时候简直痛苦。

特点和独创内容

  • 特点:对于单表增删改查,以及涉及的大于/小于/不等于/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模板说明》。

版本说明

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

POM依赖

https://search.maven.org/artifact/com.gitee.qdbp/qdbp-jdbc-spring

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

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

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

如果是jdk8以上版本,存在LocalDateTime的转换问题,需要引入qdbp-jdbc-jdk8

    <dependency>        <groupId>com.gitee.qdbp</groupId>        <artifactId>qdbp-jdbc-jdk8</artifactId>        <version>4.1.8</version>    </dependency>

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap