对于复杂的 sql, 我们不清楚其表结构和索引结果. 使用 CommentSql 工具, 可以帮助我们快速阅读 sql 逻辑.
import cn.sybn.util.io.driver.util.CommentSqlUtil;
@Test
public void commentSqlSimpleTest() {
String sql = "-- sql\n" +
"select a \n" +
"from t \n" +
"where b >1 and c = 1 and d is not null;\n" +
"-- 建表语句\n" +
"create table `t` (\n" +
" a int comment '字段a注释',\n" +
" b int comment '字段b注释',\n" +
" c int comment '字段c注释',\n" +
" d int comment '字段c注释',\n" +
" PRIMARY KEY (`a`),\n" +
" UNIQUE KEY `b` (`b`),\n" +
" KEY `b_c` (`b`,`c`)\n" +
")\n";
String s = CommentSqlUtil.commentSql(sql);
}
在 echart 等业务场景下, 查询N天的数据时, 希望返回一天一行, 一共N行数据.
但是从数据库 group by 出来的数据可能不够7行, 需要将没有数据的日期填充进来.
select date, sum(v) as v from [{date:'2021-12-03',v:3},{date:'2021-12-06',v:6}] group by date
| date | v |
|---|---|
| 2021-12-03 | 3 |
| 2021-12-06 | 3 |
在 echart 等业务场景下, 查询N天的数据时, 希望返回横坐标一天一行的, 一共N行数据.
但是从数据库 group by 出来的数据可能因部分日期数据缺失不够7行, 此时需要将没有数据的日期填充进来.
select date, sum(v) as v from [{date:'2021-12-03',v:3},{date:'2021-12-06',v:6}] group by date
| date | v |
|---|---|
| 2021-12-03 | 3 |
| 2021-12-06 | 3 |
servlet-util 包中的 ControllerUtil 用于处理常见请求问题.
<dependency>
<groupId>cn.linpengfei.sybnutil</groupId>
<artifactId>servlet-util</artifactId>
<version>0.3.30-SNAPSHOT</version>
</dependency>
// cn.sybn.util.servlet.http.ControllerUtil
response.setHeader("Access-Control-Allow-Methods", "POST,GET,OPTIONS");
response.setHeader("Access-Control-Allow-Origin", ConverUtil.toString(request.getHeader("Origin")));
response.setHeader("Access-Control-Allow-Headers", ControllerUtil.getAccessRequertHeaders(request));
response.setHeader("Access-Control-Allow-Credentials", "true");
本工具包兼容 hive jdbc 和 presto jdbc. 对于同一张 hive 表, 使用 hive jdbc 和 presto jdbc 的差异如下:
<dependency>
<groupId>cn.linpengfei.sybnutil</groupId>
<artifactId>dbutil-dao</artifactId>
<version>0.3.27-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.facebook.presto</groupId>
<artifactId>presto-jdbc</artifactId>
<version>0.229</version>
</dependency>
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-jdbc</artifactId>
<version>3.1.1</version>
</dependency>