虽然现在都有框架封装 , 基本没人用这个了 . 但是如果经常在N个环境N个数据库之间查询数据  , 偶尔用下这个也是挺方便的~

package com.xbz;import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;import java.sql.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;/*** @title JDBC工具类*      连接数据库*      执行SQL*      查询对象*      查询集合* @author Xingbz*/
public class JdbcUtil {/** 驱动名称 */private static final String DRIVER_NAME = "com.mysql.cj.jdbc.Driver";/** 数据库链接地址 */private static final String url = "jdbc:mysql://127.0.0.1:3306/xdb";/** 用户名 */private static final String userName = "root";/** 密码 */private static final String password = "root";/** 定义连接 */private static Connection conn;/** 定义STMT */private static PreparedStatement stmt;/** 定义结果集 */private static ResultSet rs;/** 初始化加载链接 */static {
//        Properties prop = new Properties();//从配置文件中读取信息try {
//            prop.load(DBUtil.class.getClassLoader().getResourceAsStream("jdbc.properties"));
//            String driver = prop.getProperty("driver");
//            String url = prop.getProperty("url");
//            String userName = prop.getProperty("userName");
//            String password = prop.getProperty("password");Class.forName(DRIVER_NAME);conn = DriverManager.getConnection(url, userName, password);} catch (ClassNotFoundException e) {System.err.println("驱动加载失败");e.printStackTrace();} catch (SQLException e) {System.err.println("数据库链接异常");e.printStackTrace();}}/** 获取链接 */public static Connection getConn() {return conn;}/** 关闭链接,释放资源 */public static void close() {try {if (rs != null) {rs.close();rs = null;}if (stmt != null) {stmt.close();stmt = null;}if (conn != null) {conn.close();conn = null;}} catch (SQLException e) {System.err.println("资源释放发生异常");}}/*** 获取指定数据库下所有的表名* @param dbNm* @return*/public static List<String> getAllTableName(String dbNm) {List<String> result = new ArrayList<String>();Statement st = null;try {st = conn.createStatement();ResultSet rs = st.executeQuery("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES  WHERE TABLE_SCHEMA='" + dbNm + "'");while (rs.next()) {result.add(rs.getString(1));}} catch (SQLException e) {e.printStackTrace();} finally {if (st != null) {try {st.close();} catch (SQLException e) {e.printStackTrace();}}close();}return result;}/** 执行SQL返回ResultSet */public static ResultSet executeSql(String sql, Object... args) {try {
//            System.out.println("准备执行SQL : \n" + sql);stmt = conn.prepareStatement(sql);if (null != args && args.length != 0) {for (int i = 0; i < args.length; i++) {stmt.setObject(i + 1, args[i]);}}rs = stmt.executeQuery();} catch (SQLException e) {System.err.println("数据查询异常");e.printStackTrace();}return rs;}/*** @title 查询数据结果 , 并封装为对象* @author Xingbz*/private static <T> T excuteQuery(Class<T> klass, String sql, Object... args) {try {rs = executeSql(sql, args);ResultSetMetaData metaData = rs.getMetaData();Map<String, Object> resultMap = new HashMap<>();if (rs.next()) {for (int i = 1; i <= metaData.getColumnCount(); i++) {String columnname = metaData.getColumnLabel(i);Object obj = rs.getObject(i);resultMap.put(columnname, obj);}}return JSON.parseObject(JSON.toJSONString(resultMap), klass);} catch (Exception e) {System.err.println("数据查询异常");e.printStackTrace();} finally {close();}return JSON.toJavaObject(new JSONObject(), klass);}/*** @title 查询数据结果 , 并封装为List* @author Xingbz*/private static <T> List<T> excuteQueryToList(Class<T> klass, String sql, Object... args) {try {rs = executeSql(sql, args);List<Map<String, String>> resultList = new ArrayList<>();Map<String, String> resultMap = new HashMap<>();while (rs.next()) {ResultSetMetaData metaData = rs.getMetaData();int columnCount = metaData.getColumnCount();for (int i = 1; i <= columnCount; i++) {resultMap.put(metaData.getColumnName(i), rs.getString(i));}resultList.add(resultMap);}return JSON.parseArray(JSON.toJSONString(resultList), klass);} catch (Exception e) {System.err.println("数据查询异常");e.printStackTrace();} finally {close();}return JSON.parseArray("[]", klass);}
}

Java JDBC工具类相关推荐

  1. java jdbc工具类抽取_JavaWeb入门(三):JDBC工具类的抽取

    一.通过上篇文章,我们已经可以使用JDBC对数据库中的表进行增删改查啦(JDBC的基本使用:https://www.cnblogs.com/Infancy/p/12499806.html),我们对上篇 ...

  2. MySQL数据库学习笔记(十一)----DAO设计模式实现数据库的增删改查(进一步封装JDBC工具类)...

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  3. jdbc工具类 配置版本 20210412_222527.mp4

    jdbc工具类 配置版本 20210412_222527.mp4 编写jdbc工具类,要求,代码要灵活,可随时变更登陆用户与连接的数据库 分析: 可以使用基本的写法加上配置 让配置来提供变化的数据 避 ...

  4. 抽取JDBC工具类:JDBCUtils

    ## 抽取JDBC工具类:JDBCUtils * 目的:简化书写 * 分析:1.注册驱动也抽取2.抽取一个方法获取连接对象 * 需求:不想传递参数(麻烦),还得保证工具类的通用性 * 解决:配置文件j ...

  5. Hutool Java常用工具类汇总

    简介 Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以"甜甜的". Hu ...

  6. 10.statement对象实例(executeUpdate方法以及executeQuery方法),JDBC工具类编写

    1.JDBC工具类: 2.增删改:executeUpdate() 删除指定数据: 插入一条数据: 更新数据: 3.查:executeQuery() statement对象:Statement 是 Ja ...

  7. JDBC:JDBC工具类JDBCUtils

    JDBC工具类:JDBCUtils 1.在src目录下创建一个文件:jdbc.properties url=jdbc:mysql://localhost/stu_db ---数据库的url地址 use ...

  8. MySQL笔记 —— jdbc工具类(网站的修改密码,注册账号,注销账号功能)

    在之前的这篇博客里面MySQL笔记 -- jdbc连接数据库(增删改查,sql注入,网站登录检查) 写了网站登录检查的代码,通过将用户输入的用户名和密码与数据库中存储的用户名和密码进行比较,如果一致则 ...

  9. 抽取JDBC工具类的方法

    抽取JDBC工具类的方法 抽取JDBC工具类 目的:简化书写 抽取JDBC工具类 目的:简化书写 分析: 1.注册驱动抽取 2.抽取一个方法获取连接对象 需求:不想传递参数(麻烦),还得保证工具类的通 ...

最新文章

  1. math.hypot java_Java math
  2. centos7双网卡,一个连公网,一个连内网
  3. 吉林电子计算机学校学费多少,收费标准_吉林工商学院学费介绍_高考院校库
  4. jzoj2137-(GDKOI2004)城市统计【二维前缀和,bfs】
  5. Linux 命令之 env -- 显示系统的环境变量,定义执行命令时的环境变量
  6. Spring5 新特性
  7. 问题 | golang开发之go.mod的使用方法
  8. Openssl多个安全补丁简易分析危害及修复方案
  9. 用 Python 的 selenium扩展 驱动 火狐 谷歌 浏览器
  10. vb.net读取写入EXCEl的终极方法-NOPI。
  11. Xilinx - WP509阅读笔记 - 了解射频采样数据转换器的关键参数
  12. GPS定位轨迹抽稀之道格拉斯-普克(Douglas-Peuker)算法详解
  13. pd.read_excel
  14. hasattr()函数的用法
  15. 专访宜信CTO向江旭:技术应当服务于场景,AI天生适合金融业
  16. matlab错误使用 sum 数据类型无效。第一个参数必须为数值或逻辑值。解决方法
  17. [教程]BT服务器架设全攻略
  18. 买房后,今年双11,你还会不顾一切地买买买吗?
  19. 清橙1485 Catch The Penguins 抓企鹅
  20. 防静电地坪漆检测怎么做?

热门文章

  1. BZOJ——2134: 单选错位
  2. python征程1.4(初识python)
  3. li标签行内元素高度及居中
  4. PHP中fwrite与file_put_contents性能测试
  5. 进程和线程相关小知识
  6. 安装Ubuntu时的硬盘分区方案
  7. GRIDVIEW排序 动态实现和静态实现
  8. jQuery中bind,live,delegate与one方法的用法及区别
  9. 定义css设备类型-Media Queries
  10. 入门机器学习(十)--课后作业解析-神经网络(Python实现)