package com.zdlt.auth.api.base.datasource;
import java.sql.*;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
/**
* BaseDataSource
* <p>
* Created by shiyanjun on 2019/12/19.
*/
public abstract class BaseDataSource {
/**
* 获取连接
*
* @return
*/
abstract Connection getConnection() throws SQLException;
/**
* 执行查询
*
* @param sql
* @return
* @throws SQLException
*/
public List<Map<String, Object>> query(String sql) throws SQLException {
Connection connection = getConnection();
PreparedStatement statement = connection.prepareStatement(sql);
ResultSet resultSet = statement.executeQuery();
return resoleResult(resultSet);
}
/**
* 解析结果
*
* @param resultSet
* @return
*/
public List<Map<String, Object>> resoleResult(ResultSet resultSet) throws SQLException {
List<Map<String, Object>> resultList = new ArrayList<>();
ResultSetMetaData metaData = resultSet.getMetaData();
while (resultSet.next()) {
Map<String, Object> resultMap = new LinkedHashMap<>();
for (int i = 1; i <= metaData.getColumnCount(); i++) {
String columnLabel = metaData.getColumnLabel(i);
String columnValue = resultSet.getString(columnLabel);
resultMap.put(columnLabel, columnValue);
}
resultList.add(resultMap);
}
return resultList;
}
}
package com.zdlt.auth.api.base.datasource;
import java.sql.Connection;
import java.sql.SQLException;
/**
* CustomDataSource
* <p>
* Created by shiyanjun on 2019/12/19.
*/
public class CustomDataSource extends BaseDataSource {
private String url;
private String username;
private String password;
CustomDataSource(String url, String username, String password) {
this.url = url;
this.username = username;
this.password = password;
}
/**
* 获取连接
*
* @return
*/
@Override
public Connection getConnection() throws SQLException {
return ConnectUtil.getConnection(url, username, password);
}
}
package com.zdlt.auth.api.base.datasource;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
/**
* ConnectUtil
* <p>
* Created by shiyanjun on 2019/12/19.
*/
public class ConnectUtil {
/**
* 获取JDBC连接
*
* @param url
* @param username
* @param password
* @return
* @throws SQLException
*/
public static Connection getConnection(String url, String username, String password) throws SQLException {
return DriverManager.getConnection(url, username, password);
}
}
package com.zdlt.auth.api.base.datasource;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
public class App {
public static void main(String[] args) {
CustomDataSource customDataSource = new CustomDataSource(
"jdbc:mysql://127.0.0.1:3306/authapi", "root", "123456");
try {
List<Map<String, Object>> resultList = customDataSource.query("select * from auth_code");
System.out.println(resultList);
} catch (SQLException e) {
e.printStackTrace();
}
}
}