QuickDAO 4.1.10 版本发布,支持自定义适配数据库类型
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查询
支持外键关联操作
虽然很多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

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
HServer 2.9.82 已经发布,高性能 Webserver
HServer 2.9.82 已经发布,高性能 Webserver。 此版本更新内容包括: 1、升级Netty版本等 2、添加下载大文件的api 3、响应头添加RequestId 4、优化相关代码 详情查看:https://gitee.com/HServer/HServer/releases/2.9.82
- 下一篇
跑马灯带你深入浅出TextView的源码世界
一、背景 想必大家平时也没那么多时间是单独看源码,又或者只是单纯的看源码遇到问题还是不知道怎么从源码的角度解决。 但是大家平时开发过程中肯定会遇到这样或那样的小问题,通过百度、Google搜索都无果,想尝试分析源码又不知道从什么地方开始分析起,导致最终放弃。 本篇文章就是通过一个小问题着手,从思路到实施一步步教大家面对一个问题时怎么从源码的角度去分析解决问题。 1.1 问题背景 在Android6.0及以上系统版本中,点击“添加购物车”按钮TextView跑马灯动画会出现跳动(动画重置,滚动从头重新开始)如下图所示: 1.2 前期准备 下好源码的AndroidStuido 、生成一个Android模拟器、有问题的demo工程。 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViewById(R.id.show_tv).setSelected(true); final T...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Red5直播服务器,属于Java语言的直播服务器
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8编译安装MySQL8.0.19