1. package com.zdlt.auth.api.base.datasource;
  2.  
  3. import java.sql.*;
  4. import java.util.ArrayList;
  5. import java.util.LinkedHashMap;
  6. import java.util.List;
  7. import java.util.Map;
  8.  
  9. /**
  10. * BaseDataSource
  11. * <p>
  12. * Created by shiyanjun on 2019/12/19.
  13. */
  14. public abstract class BaseDataSource {
  15. /**
  16. * 获取连接
  17. *
  18. * @return
  19. */
  20. abstract Connection getConnection() throws SQLException;
  21.  
  22. /**
  23. * 执行查询
  24. *
  25. * @param sql
  26. * @return
  27. * @throws SQLException
  28. */
  29. public List<Map<String, Object>> query(String sql) throws SQLException {
  30. Connection connection = getConnection();
  31. PreparedStatement statement = connection.prepareStatement(sql);
  32. ResultSet resultSet = statement.executeQuery();
  33. return resoleResult(resultSet);
  34. }
  35.  
  36. /**
  37. * 解析结果
  38. *
  39. * @param resultSet
  40. * @return
  41. */
  42. public List<Map<String, Object>> resoleResult(ResultSet resultSet) throws SQLException {
  43. List<Map<String, Object>> resultList = new ArrayList<>();
  44. ResultSetMetaData metaData = resultSet.getMetaData();
  45. while (resultSet.next()) {
  46. Map<String, Object> resultMap = new LinkedHashMap<>();
  47. for (int i = 1; i <= metaData.getColumnCount(); i++) {
  48. String columnLabel = metaData.getColumnLabel(i);
  49. String columnValue = resultSet.getString(columnLabel);
  50. resultMap.put(columnLabel, columnValue);
  51. }
  52. resultList.add(resultMap);
  53. }
  54. return resultList;
  55. }
  56. }
  1. package com.zdlt.auth.api.base.datasource;
  2.  
  3. import java.sql.Connection;
  4. import java.sql.SQLException;
  5.  
  6. /**
  7. * CustomDataSource
  8. * <p>
  9. * Created by shiyanjun on 2019/12/19.
  10. */
  11. public class CustomDataSource extends BaseDataSource {
  12. private String url;
  13. private String username;
  14. private String password;
  15.  
  16. CustomDataSource(String url, String username, String password) {
  17. this.url = url;
  18. this.username = username;
  19. this.password = password;
  20. }
  21.  
  22. /**
  23. * 获取连接
  24. *
  25. * @return
  26. */
  27. @Override
  28. public Connection getConnection() throws SQLException {
  29. return ConnectUtil.getConnection(url, username, password);
  30. }
  31. }
  1. package com.zdlt.auth.api.base.datasource;
  2.  
  3. import java.sql.Connection;
  4. import java.sql.DriverManager;
  5. import java.sql.SQLException;
  6.  
  7. /**
  8. * ConnectUtil
  9. * <p>
  10. * Created by shiyanjun on 2019/12/19.
  11. */
  12. public class ConnectUtil {
  13. /**
  14. * 获取JDBC连接
  15. *
  16. * @param url
  17. * @param username
  18. * @param password
  19. * @return
  20. * @throws SQLException
  21. */
  22. public static Connection getConnection(String url, String username, String password) throws SQLException {
  23. return DriverManager.getConnection(url, username, password);
  24. }
  25. }
  1. package com.zdlt.auth.api.base.datasource;
  2.  
  3. import java.sql.SQLException;
  4. import java.util.List;
  5. import java.util.Map;
  6.  
  7. public class App {
  8. public static void main(String[] args) {
  9. CustomDataSource customDataSource = new CustomDataSource(
  10. "jdbc:mysql://127.0.0.1:3306/authapi", "root", "123456");
  11. try {
  12. List<Map<String, Object>> resultList = customDataSource.query("select * from auth_code");
  13. System.out.println(resultList);
  14. } catch (SQLException e) {
  15. e.printStackTrace();
  16. }
  17. }
  18. }

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. SQL SERVER-查看内存使用情况

    --使用内存的各对象 SELECT type, sum(virtual_memory_reserved_kb) as VM_Reserved, sum(virtual_memory_committed ...

  2. Ansible入门笔记(2)之常用模块

    目录 Ansible常用模块 1.1.Ansible Ad-hoc 1.2.Ansible的基础命令 1.3.常用模块 Ansible常用模块 1.1.Ansible Ad-hoc 什么事ad-hoc ...

  3. go build -tags 的使用

    go build 使用tag来实现编译不同的文件 go-tooling-workshop 中关于go build的讲解可以了解到go bulid的一些用法,这篇文章最后要求实现一个根据go bulid ...

  4. sublime设置默认字体样式

    因电脑配置的不同,还有个人喜好的不同,有时候想用自己喜欢的字体来写代码,想用自己习惯的字号大小来显示代码.这些又该怎样设置呢? 本节主要介绍下如何设置字体大小和样式 (1)点菜单栏 “Preferen ...

  5. Graylog-centos安装

    graylog安装 1.先决条件 yum install java-1.8.0-openjdk-headless.x86_64 -y #安装java软件包 yum install epel-relea ...

  6. BAT脚本一键启动多个程序

    最近写代码,开机要开各种环境,IDE,每次都要对着桌面图标一个个点击,感觉非常麻烦,简直浪费生命,每天开机要花好几分钟打开这些东西,于是稍微学习了一下window下的bat脚本语言,写了一个极为简单而 ...

  7. objc_object 与 NSObject

    objc_object 与 NSObject:同一个事物的不同表现形式.

  8. Linux中的磁盘练习

    查看磁盘接口类型 ide dh[a-z] scsi sd[a-z] 添加磁盘 先添加一个磁盘 cd /dev/ ls sd* 可以看到先添加的磁盘 磁盘分区 .fdisk /dev/sdb n (添加 ...

  9. Trie Service

    Description Build tries from a list of <word, freq> pairs. Save top 10 for each node. Example ...

  10. Xamarin.Forms 自定义控件(呈现器和效果)

    Xamarin.Forms 使用目标平台的本机控件呈现用户界面,从而让 Xamarin.Forms 应用程序为每个平台保留了相应的界面外观.凭借效果,无需进行自定义呈现器实现,即可自定义每个平台上的本 ...