拓展阅读

linq

querydsl

前言

自己通过 jdbc 实现了一个 数据库查询工具,不过后来想拓展查询功能时,总觉得不够尽兴。

所以在想能不能把 SQL 的构建单独抽离出来。

最好是

where 条件独立,可以兼容目前的 jdbc

update/insert/delete/select

select 的结果处理:distinct sum/avg/min/max

排序:order by desc/ASC

page: 分页

join: inner/left/right join

大概想要的效果

通过 java 代码,避免拼接过程的代码编写

select("*")
.from("user")
.where("id=1")

等价于:

select * from where id=1;

当然,这里的 where 感觉不够尽兴。

where(
eq("id", "1").like("name", "456")    
);

等价于:

where id=1 and name like '%456%'

可能这样更好。可以考虑更加复杂的 and or 的组合。

灵活与自定义

感觉最好的还是要有两种模式:

raw 模式,直接写什么就是什么。

oo 模式,通过限制输入,避免出错。

二者可以整合使用。

其他

比如考虑和 spring template 整合。

和 mybatis 整合等等。

他山之石

当然了,有这种想法的人一定非常多,已经有很多优秀的设计了。

我们可以先看一下,学习一下别人优秀的设计。

这个内容还是比较多的,每一篇单独一个,这里做一个简单的汇总。

参考资料

https://github.com/amaembo/streamex