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();
}
}
}

JDBC连接抽象方法的使用例子的更多相关文章

  1. JDBC连接MySQL数据库代码模板

    下面这个例子是最简单的JDBC连接MySQL数据库的例子. 一般步骤: 1.注册驱动: 2.建立连接: 3.创建语句: 4.处理结果: 5.释放资源. 注意: 1.软件开发环境:MyEclipse 8 ...

  2. java jdbc 连接mysql数据库 实现增删改查

    好久没有写博文了,写个简单的东西热热身,分享给大家. jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打 ...

  3. 基于CDH5.x 下面使用eclipse 操作hive 。使用java通过jdbc连接HIVESERVICE 创建表

    基于CDH5.x 下面使用eclipse 操作hive .使用java通过jdbc连接HIVESERVICE 创建表 import java.sql.Connection; import java.s ...

  4. JDBC连接数据以及操作数据

    好久没有写博文了,写个简单的东西热热身,分享给大家. jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打 ...

  5. 注意JDBC驱动的版本和JDK的版本是否匹配 JDBC连接Mariadb

    Java利用JDBC连接Mariadb的过程和MySQL基本一致. 但是需要注意JDBC驱动的版本和JDK的版本是否匹配: JDBC和JDK版本对应关系 JDBC版本 JDK版本 2.x 1.8 1. ...

  6. Java编程学习之JDBC连接MySQL

    JDBC连接MySQL 一.对JDBC连接数据库的步骤1.加载数据库驱动//加载驱动Class.forName(driverClass)-------------------------------- ...

  7. 【转帖】置高并发jdbc连接池

    简单的MySQL连接池 <Resource type="javax.sql.DataSource" name="jdbc/TestDB" factory= ...

  8. JDBC连接池&DBUtils使用

    使用连接池改造JDBC的工具类: 1.1.1          需求: 传统JDBC的操作,对连接的对象销毁不是特别好.每次创建和销毁连接都是需要花费时间.可以使用连接池优化的程序. * 在程序开始的 ...

  9. (1) Java实现JDBC连接及事务的方式

    许多数据库的auto-commit默认是ON的,比如MySQL,PostgresSQL等.当然也有默认是OFF的,比如Oracle(Oracle里面执行DML语句是需要手动commit的). 这里我们 ...

随机推荐

  1. backtrace() returns only one stack frame

    参考: 在Linux中如何利用backtrace信息解决程序崩溃的问题 linux 打印堆栈方法 https://devtalk.nvidia.com/default/topic/987279/jet ...

  2. Nginx Location指令URI匹配规则详解

    server { listen 80; server_name ss.test *.ss.test; root "D:/Project/PHP/admin-h5/dist/"; s ...

  3. C++学习(4)——通讯录管理程序

    复习简单操作,实现一个非常非常简单的通讯录管理小程序 #include <iostream> using namespace std; #include <string> co ...

  4. Django如何与JQuery进行数据通信?

    index.html: 下面form的action属性表示当提交表单时,向何处发送表单数据 <script src="https://code.jquery.com/jquery-3. ...

  5. C++网站学习

    0.C++   一个专门做C++的网站 一.以下内容来自LEARN C++ 的<更好编写C++程序的5个建议>部分 1.C++的一些标准: Coding Standards C++ Cor ...

  6. WPF系列 —— 控件添加依赖属性

    依赖属性的概念,用途 ,如何新建与使用.本文用做一个自定义TimePicker控件来演示WPF的依赖属性的简单应用. 先上TimePicker的一个效果图. 概念 和 用途:依赖属性是对传统.net ...

  7. BZOJ5509: [Tjoi2019]甲苯先生的滚榜

    题解 开n个平衡树对每个AC数维护罚时,然后不同AC数用树状数组维护即可. 其实挺好写的...就是评测的时候评的巨久... #include <bits/stdc++.h> using n ...

  8. 201671030117 孙欢灵 实验十四 团队项目评审&课程学习总结

    项目 内容 作业所属课程 所属课程 作业要求 作业要求 课程学习目标 (1)掌握软件项目评审会流程:(2)反思总结课程学习内容 任务一:团队项目审核已完成.项目验收过程意见表已上交. 任务二:课程学习 ...

  9. 第6章 初识MyBatis

    6.1 什么是MyBatis Mybatis(前身是iBatis)是一个支持普通SQL查询.存储过程以及高级映射的持久层框架.MyBatis框架也被称为ORM(Object/Relational Ma ...

  10. MongoDB 聚合函数

    概念 聚合函数是对一组值执行计算并返回单一的值 主要的聚合函数 count distinct Group MapReduce 1.count db.users.count() db.users.cou ...