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
- 支持多种连接池:
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 SQL
String 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')");