try {
String sql="select * from course";
JobDatasource datasource=new JobDatasource();
BaseQueryTool queryTool = QueryToolFactory.getByDbType(datasource,true);
Connection conn = queryTool.getConnection();
Statement stmt = conn.createStatement();
ResultSet set = stmt.executeQuery(sql);
//sql查询出来的数据转换为集合
BeanListHandler<Course> bh=new BeanListHandler<Course>(Course.class);
List<Course> courseList=bh.handle(set);
conn.close();
stmt.close();
return AjaxResult.success(courseList);
} catch (SQLException e) {
logger.error("数据库查询失败!,失败原因:"+e.getMessage());
return AjaxResult.success(e.getMessage());
}
查询数据的工具类:
package com.appraise.common.tool;
import com.appraise.common.core.domain.entity.JobDatasource;
import com.appraise.common.utils.JdbcConstants;
import com.appraise.common.utils.RdbmsException;
import java.sql.SQLException;
/**
* 工具类,获取单例实体
*
* @author zhouhongfa@gz-yibo.com
* @ClassName QueryToolFactory
* @Version 1.0
* @since 2019/7/18 9:36
*/
public class QueryToolFactory {
public static BaseQueryTool getByDbType(JobDatasource jobDatasource,boolean flag) {
//获取dbType
String datasource = jobDatasource.getDatasource();
if (JdbcConstants.MYSQL.equals(datasource)) {
return getMySQLQueryToolInstance(jobDatasource,flag);
} else if (JdbcConstants.ORACLE.equals(datasource)) {
return getOracleQueryToolInstance(jobDatasource,flag);
} else if (JdbcConstants.POSTGRESQL.equals(datasource)) {
return getPostgresqlQueryToolInstance(jobDatasource,flag);
} else if (JdbcConstants.SQL_SERVER.equals(datasource)) {
return getSqlserverQueryToolInstance(jobDatasource,flag);
}else if (JdbcConstants.HIVE.equals(datasource)) {
return getHiveQueryToolInstance(jobDatasource,flag);
} else if (JdbcConstants.CLICKHOUSE.equals(datasource)) {
return getClickHouseQueryToolInstance(jobDatasource,flag);
}else if (JdbcConstants.HBASE20XSQL.equals(datasource)) {
return getHbase20XsqlQueryToolQueryToolInstance(jobDatasource,flag);
}
throw new UnsupportedOperationException("找不到该类型: ".concat(datasource));
}
private static BaseQueryTool getMySQLQueryToolInstance(JobDatasource jdbcDatasource,boolean flag) {
try {
return new MySQLQueryTool(jdbcDatasource,flag);
} catch (Exception e) {
throw RdbmsException.asConnException(JdbcConstants.MYSQL,
e,jdbcDatasource.getJdbcUsername(),jdbcDatasource.getDatasourceName());
}
}
private static BaseQueryTool getOracleQueryToolInstance(JobDatasource jdbcDatasource,boolean flag) {
try {
return new OracleQueryTool(jdbcDatasource,flag);
} catch (SQLException e) {
throw RdbmsException.asConnException(JdbcConstants.ORACLE,
e,jdbcDatasource.getJdbcUsername(),jdbcDatasource.getDatasourceName());
}
}
private static BaseQueryTool getPostgresqlQueryToolInstance(JobDatasource jdbcDatasource,boolean flag) {
try {
return new PostgresqlQueryTool(jdbcDatasource,flag);
} catch (SQLException e) {
throw RdbmsException.asConnException(JdbcConstants.POSTGRESQL,
e,jdbcDatasource.getJdbcUsername(),jdbcDatasource.getDatasourceName());
}
}
private static BaseQueryTool getSqlserverQueryToolInstance(JobDatasource jdbcDatasource,boolean flag) {
try {
return new SqlServerQueryTool(jdbcDatasource,flag);
} catch (SQLException e) {
throw RdbmsException.asConnException(JdbcConstants.SQL_SERVER,
e,jdbcDatasource.getJdbcUsername(),jdbcDatasource.getDatasourceName());
}
}
private static BaseQueryTool getHiveQueryToolInstance(JobDatasource jdbcDatasource,boolean flag) {
try {
return new HiveQueryTool(jdbcDatasource,flag);
} catch (SQLException e) {
throw RdbmsException.asConnException(JdbcConstants.HIVE,
e,jdbcDatasource.getJdbcUsername(),jdbcDatasource.getDatasourceName());
}
}
private static BaseQueryTool getClickHouseQueryToolInstance(JobDatasource jdbcDatasource,boolean flag) {
try {
return new ClickHouseQueryTool(jdbcDatasource,flag);
} catch (SQLException e) {
throw RdbmsException.asConnException(JdbcConstants.CLICKHOUSE,
e, jdbcDatasource.getJdbcUsername(), jdbcDatasource.getDatasourceName());
}
}
private static Hbase20XsqlQueryTool getHbase20XsqlQueryToolQueryToolInstance(JobDatasource jdbcDatasource,boolean flag) {
try {
return new Hbase20XsqlQueryTool(jdbcDatasource,flag);
} catch (SQLException e) {
throw RdbmsException.asConnException(JdbcConstants.HBASE20XSQL,
e, jdbcDatasource.getJdbcUsername(), jdbcDatasource.getDatasourceName());
}
}
}