JDBC连接抽象方法的使用例子
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连接抽象方法的使用例子的更多相关文章
- JDBC连接MySQL数据库代码模板
下面这个例子是最简单的JDBC连接MySQL数据库的例子. 一般步骤: 1.注册驱动: 2.建立连接: 3.创建语句: 4.处理结果: 5.释放资源. 注意: 1.软件开发环境:MyEclipse 8 ...
- java jdbc 连接mysql数据库 实现增删改查
好久没有写博文了,写个简单的东西热热身,分享给大家. jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打 ...
- 基于CDH5.x 下面使用eclipse 操作hive 。使用java通过jdbc连接HIVESERVICE 创建表
基于CDH5.x 下面使用eclipse 操作hive .使用java通过jdbc连接HIVESERVICE 创建表 import java.sql.Connection; import java.s ...
- JDBC连接数据以及操作数据
好久没有写博文了,写个简单的东西热热身,分享给大家. jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打 ...
- 注意JDBC驱动的版本和JDK的版本是否匹配 JDBC连接Mariadb
Java利用JDBC连接Mariadb的过程和MySQL基本一致. 但是需要注意JDBC驱动的版本和JDK的版本是否匹配: JDBC和JDK版本对应关系 JDBC版本 JDK版本 2.x 1.8 1. ...
- Java编程学习之JDBC连接MySQL
JDBC连接MySQL 一.对JDBC连接数据库的步骤1.加载数据库驱动//加载驱动Class.forName(driverClass)-------------------------------- ...
- 【转帖】置高并发jdbc连接池
简单的MySQL连接池 <Resource type="javax.sql.DataSource" name="jdbc/TestDB" factory= ...
- JDBC连接池&DBUtils使用
使用连接池改造JDBC的工具类: 1.1.1 需求: 传统JDBC的操作,对连接的对象销毁不是特别好.每次创建和销毁连接都是需要花费时间.可以使用连接池优化的程序. * 在程序开始的 ...
- (1) Java实现JDBC连接及事务的方式
许多数据库的auto-commit默认是ON的,比如MySQL,PostgresSQL等.当然也有默认是OFF的,比如Oracle(Oracle里面执行DML语句是需要手动commit的). 这里我们 ...
随机推荐
- prometheus学习系列九: Prometheus AlertManager使用
在Prometheus的报警系统中,是分为2个部分的, 规则是配置是在prometheus中的, prometheus组件完成报警推送给alertmanager的, alertmanager然后管理这 ...
- Intel网卡的漫游主动性
- js定时器的应用
定时器分为两种 一种是一次性的,时间到就执行 var timer=setTimeout(fun,毫秒数); 清除的方法 clearTimeout(timer) 第二种是周期性的,根据设定的时间周期进行 ...
- Windows & Ubuntu 双系统完美卸载Ubuntu(不残留,无污染)
双系统卸载Ubuntu时,如若直接从Windows磁盘管理里格式化Ubuntu分区,由于Ubuntu的引导盘的原因,会导致电脑启动时出现问题,所以不建议这样的操作. 卸载Ubuntu前需要区分BIOS ...
- 一文弄懂Pytorch的DataLoader, DataSet, Sampler之间的关系
以下内容都是针对Pytorch 1.0-1.1介绍. 很多文章都是从Dataset等对象自下往上进行介绍,但是对于初学者而言,其实这并不好理解,因为有的时候会不自觉地陷入到一些细枝末节中去,而不能把握 ...
- Chrome出现“浏览器由所属组织管理”如何解决
之前碰到了这个问题,删除注册表解决了.当时没记下来,今天又碰到了.那就写下来以备之后再碰到吧 删除了注册表\HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Ch ...
- jmeter APP接口压力测试
第一步:获取开发文档,了解接口地址和参数名 第二步:jmeter中添加需要测试的接口 a.设计APP的接口框架: b.http请求默认值设置如下: c.接口中应需要用到sign字段,加密字符串与时间戳 ...
- 男上加男 BETA冲刺博客汇总
项目BETA冲刺(团队) --总结 1.团队信息 团队名 :男上加男 成员信息 : 队员学号 队员姓名 个人博客地址 备注 221600427 Alicesft https://www.cnblogs ...
- HDFS的读写流程
1.2. 客户端向NameNode发起创建文件的请求,在NameNode上创建一个文件名,并且返回一个输出流 3.客户端向输出流发起写入数据的请求 4.输出流向NameNode请求写数据,NameNo ...
- includes方法 使用 Object.defineProperty 扩展 ,解决不兼容问题
原文链接 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/includes ...