您现在的位置是:首页 > 文章详情

QuickDAO 4.1.10 版本发布,支持自定义适配数据库类型

日期:2022-03-23点击:365

QuickDAO4.1.10 版本已发布,可在maven中央仓库下载(阿里云仓库可能更新不及时),本次更新内容如下:

友情提示:每次更新版本时通常在线文档也会同步更新.请注意查看文档页面时清空缓存,以便获取最新文档

  • [新增]自定义数据提供者功能,可以自主适配例如clickhouse,presto等数据库驱动程序
  • [新增]实现SQLite删除列功能
  • [优化]整合DAOUtil类关于数据库结构同步的方法成一个
  • [优化]解决调用or查询方法失败问题
  • [新增]DAOUtil添加对比数据库字段信息并生成SQL语句的功能
  • [修复]解决批量更新报错时无法打印SQL问题

自定义适配数据库功能需要用户提供DatabaseProvider接口适配类即可。目前QuickDAO内置实现了MySQL,Oracle等数据库适配器。

例如若用户需要适配clickhouse数据库,clickhouse数据库的语法同mysql类似,因此我们可以继承MySQLDatabaseProvider,然后修改关于获取表结构的SQL语句。样例代码如下:

 ClickHouseDDLBuilder.java
 import cn.schoolwow.quickdao.builder.ddl.MySQLDDLBuilder; import cn.schoolwow.quickdao.domain.Entity; import cn.schoolwow.quickdao.domain.Property; import cn.schoolwow.quickdao.domain.QuickDAOConfig; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; public class ClickHouseDDLBuilder extends MySQLDDLBuilder { public ClickHouseDDLBuilder(QuickDAOConfig quickDAOConfig) { super(quickDAOConfig); } @Override public String hasIndexExists(String tableName, String indexName) { throw new UnsupportedOperationException("不支持的的操作"); } @Override public String dropIndex(String tableName, String indexName) { throw new UnsupportedOperationException("不支持的的操作"); } @Override protected void getIndex(List<Entity> entityList) throws SQLException { } @Override protected void getEntityPropertyList(List<Entity> entityList) throws SQLException { String getEntityPropertyListSQL = "select name,table from system.columns"; ResultSet resultSet = connectionExecutor.executeQuery("获取表字段信息",getEntityPropertyListSQL); while (resultSet.next()) { for(Entity entity : entityList){ if(!entity.tableName.equalsIgnoreCase(resultSet.getString("table"))){ continue; } //添加字段信息 Property property = new Property(); property.column = resultSet.getString("name"); entity.properties.add(property); break; } } resultSet.close(); } @Override protected List<Entity> getEntityList() throws SQLException { String getEntityListSQL = "show tables;"; ResultSet resultSet = connectionExecutor.executeQuery("获取表列表",getEntityListSQL); List<Entity> entityList = new ArrayList<>(); while (resultSet.next()) { Entity entity = new Entity(); entity.tableName = resultSet.getString(1); entityList.add(entity); } resultSet.close(); return entityList; } }
 QuickDAO.addDatabaseProvider(new MySQLDatabaseProvider() { @Override public AbstractDDLBuilder getDDLBuilderInstance(QuickDAOConfig quickDAOConfig) { return new ClickHouseDDLBuilder(quickDAOConfig); } @Override public String name() { return "clickhouse"; } }); HikariDataSource hikariDataSource = new HikariDataSource(); hikariDataSource.setDriverClassName("com.clickhouse.jdbc.ClickHouseDriver"); hikariDataSource.setJdbcUrl("jdbc🇨🇭//127.0.0.1/ck?socket_timeout=120000"); dao = QuickDAO.newInstance() .autoCreateTable(false) .autoCreateProperty(false) .dataSource(hikariDataSource) .build();

使用QuickDAO.addDatabaseProvider方法添加提供者即可。若有不理解的地方可参考内置的MySQLDatabaseProvider类等等。

 

QuickDAO是一款简单易用的ORM框架,虽然市面上ORM框架已经非常多,但是有很多痛点这些框架并没有解决.QuickDAO相较于其他ORM框架的特点如下:

支持lambda表达式

从版本4.1.4开始,查询API支持lambda查询

lambda文档

支持外键关联操作

虽然很多ORM框架宣称支持外键查询,但无一例外最终形式仍然是让开发者手写SQL语句.QuickDAO在API设计层面上支持外键关联查询,真正的无需手写多表关联查询SQL语句.

外键关联查询文档

虚拟查询(无实体类查询)

常规的ORM框架都需要建立实体类,然后再根据实体类来查询。QuickDAO支持无实体类查询,不用事先建立实体类也能够事先对数据库的查询,修改和删除.

虚拟查询文档

事务操作

QuickDAO实现了事务功能,事务相关API提供了QuickDAO其他数据库操作一样便利的API,对于复杂的事务操作需求,QuickDAO也能够满足

事务操作文档

子查询支持

QuickDAO在API层面上支持子查询,您可以通过API直接拼接生成一个子查询SQL语句。这意味着即使是一些相当复杂的SQL语句,QuickDAO也能够轻松面对。

子查询文档

自定义数据库列类型,索引等

QuickDAO提供了实体注解,实体注解的类型丰富。通过实体注解,您可以定义数据库列的列名,列类型,列注释,表索引,非空,check约束等等等等。

实体注解文档

最后,写这个框架的初衷是市面上已有的ORM框架不能解决开发中痛点.QuickDAO经过近2年的支持开发,目前已经迭代到4.X版本,也在个人项目,公司项目实际使用过.希望本人开发的QuickDAO框架能够为中国的开源事业贡献一份自己的力量.

QuickDAO文档: https://quickdao.schoolwow.cn

QuickDAO的github地址: https://github.com/sunyue1380/QuickDAO4

QuickDAO的gitee地址: https://gitee.com/648823596/quickdao4

 

原文链接:https://www.oschina.net/news/187884/quickdao-4-1-10-released
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章