JDBC封装组件
组件编码
hzero-starter-jdbc
一、简介
1.1 概述
hzero-starter-jdbc 提供基于JDBC的基本CRUD封装。可以与平台服务的数据源功能配合使用。
1.2 组件坐标:
<dependency>
<groupId>org.hzero.starter</groupId>
<artifactId>hzero-starter-jdbc</artifactId>
<version>${hzero.starter.version}</version>
</dependency>
1.3 特性
- 支持多种连接类型:
MySQL、Oracle、SqlServer、TiDB和Hive - 支持多种连接池:
C3P0、Dbcp2和Druid - 支持CRUD操作
二、使用指南
2.1 查询
- 使用查询器构建工厂类构建查询器
- 查询器构建工厂类 :
org.hzero.jdbc.QueryFactory - 查询器类:
org.hzero.jdbc.Query - 查询器构建参数说明
- 查询器构建工厂类 :
| 参数名称 | 参数类型 | 是否必须 | 说明 |
|---|---|---|---|
| driverClass | String | 是 | 驱动类 |
| datasourceUrl | String | 是 | 数据源连接URL |
| username | String | 是 | 用户名 |
| password | String | 是 | 密码 |
| dbType | enum | 是 | 数据库类型 |
| dbPoolType | enum | 是 | 连接池类型 |
| options | Map | 连接池类型为NO时非必须 |
连接池参数 |
-
查询器支持的操作
Connection getJdbcConnection(): 获取JDBC连接Map query(sqlText): 获取可执行SQL执行结果,结果返回一个Map,Map中包含一个值为DATA的Key,对应的Value是一个列表,列表中的每一个元素为一个Map,该Map中的Key为查询列,值为每一行记录对应列的值。Map query(sqlText, pageStatement): 分页获取可执行SQL执行结果,pageStatement为分页参数long queryCount(sqlText): 获取可执行SQL的结果数量String countSql(sqlText): 将可执行SQL转换为COUNT SQLString pageSql(sqlText, sqlPageStatement): 将可执行SQL转换为分页SQL,会自动判断当前数据库类型,按照数据库类型生成不同的SQL
-
查询器和平台服务数据源功能组合使用
DatasourceVO ds = datasourceHelper.getDatasource(DsConstants.DsPurpose.DR, BaseConstants.DEFAULT_TENANT_ID, "HZERO.PLATFORM");
Map<String, Object> options = new HashMap<>(16);
if (StringUtils.isNotEmpty(ds.getOptions())) {
options = JSON.parseObject(ds.getOptions());
}
Query standardQuery = QueryFactory.create(
ds.getDriverClass(),
ds.getDatasourceUrl(),
ds.getUsername(),
ds.getPasswordEncrypted(),
DatabaseTypeEnum.MYSQL,
DBPoolTypeEnum.DRUID, options);
return standardQuery.query("SELECT * FROM fd_language");
2.2 增删改
- 构建增删改执行器对象:
- 增删改执行器类 :
org.hzero.jdbc.Update - 增删改执行器构建参数说明
- 增删改执行器类 :
| 参数名称 | 参数类型 | 是否必须 | 说明 |
|---|---|---|---|
| driverClass | String | 是 | 驱动类 |
| datasourceUrl | String | 是 | 数据源连接URL |
| username | String | 是 | 用户名 |
| password | String | 是 | 密码 |
| dbType | enum | 是 | 数据库类型 |
| dbPoolType | enum | 是 | 连接池类型 |
| options | Map | 连接池类型为NO时非必须 |
连接池参数 |
-
增删改执行器支持的操作
Connection getJdbcConnection(): 获取JDBC连接executeAndClose(sqlText): 执行增删改SQL并且自动提交,关闭连接executeAndClose(sqlTexts): 批量执行增删改SQL并且自动提交,关闭连接execute(sqlText): 执行增删改SQL,返回JDBC连接,并且不提交execute(sqlTexts): 批量执行增删改SQL,返回JDBC连接,并且不提交commitAndClose(): 提交并且关闭连接
-
增删改执行器和平台服务数据源功能组合使用
DatasourceVO ds = datasourceHelper.getDatasource(DsConstants.DsPurpose.DR, BaseConstants.DEFAULT_TENANT_ID, "HZERO.PLATFORM");
Map<String, Object> options = new HashMap<>(16);
if (StringUtils.isNotEmpty(ds.getOptions())) {
options = JSON.parseObject(ds.getOptions());
}
new Update(
ds.getDriverClass(),
ds.getDatasourceUrl(),
ds.getUsername(),
ds.getPasswordEncrypted(),
DatabaseTypeEnum.MYSQL,
DBPoolTypeEnum.DRUID,
options)
.executeAndClose("INSERT INTO at_jdbc(a) values('A')");
2.3 Hive支持
1.3.0.RELEASE版本中新增了对Hive的支持,如果需要使用Hive数据库,需要在以来中添加相关的驱动。
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-jdbc</artifactId>
<version>3.1.2</version>
<optional>true</optional>
</dependency>
- 如果要在报表服务中使用
Hive数据库,需要排除一些冲突依赖。
<exclusions>
<exclusion>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-1.2-api</artifactId>
</exclusion>
</exclusions>