话不多说,直接上代码

package com.iotck.util;import java.io.IOException;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.sql.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Properties;/*** @Author: 廾匸* @Date: 2021/02/08 14:01* @Description: 数据库连接* @version: 1.01*/
public class JdbcUtil {private static String driver;private static String url;private static String account;private static String passWord;protected static Connection connect;protected static PreparedStatement statement;protected static ResultSet resultSet;/*** 静态代码块加载配置文件信息* 配置文件在后部*/static {try {// 1.创建一个properties对象(集合)Properties properties = new Properties();// 2.通过当前类获取类加载器ClassLoader classLoader = JdbcUtil.class.getClassLoader();// 3.通过类加载器的方法获得一个输入流InputStream inputStream = ClassLoader.getResourceAsStream("jdbc");// 4.使用 properties.load()加载输入流properties.load(inputStream);/*// 以上可以写成一句如下Properties properties = new Properties();properties.load(JdbcUtil.class.getClassLoader().getResourceAsStream("jdbc"));*/// 5.获取配置文件里相关参数的值driver = properties.getProperty("driver");url = properties.getProperty("url");account = properties.getProperty("account");passWord = properties.getProperty("passWord");//加载驱动程序Class.forName(driver);} catch (ClassNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}// 获取数据库连接包装成一个获取方法private static Connection getConnect() throws SQLException {//  DriverManager.connect(url,username, password)获取连接对象return DriverManager.getConnection(url,account,passWord);}// 对数据库进行增删改操作public static boolean update(String sql,Object...objects){try {// 得到连接对象connect = getConnect();// 预加载sql语句,带有占位符statement = connect.prepareStatement(sql);// 占位符赋值if(objects != null && objects.length != 0){for (int i = 0; i < objects.length; i++) {statement.setObject(i+1,objects[i]);}}// 更新操作,返回更新的行数。int i = statement.executeUpdate();if(i > 0){return true;}return false;} catch (SQLException e) {e.printStackTrace();}finally {try {// 调用关闭资源close(connect,statement);} catch (SQLException e) {e.printStackTrace();}}return false;}// 对数据库进行查询操作public static <T> List<T> query(String sql,Class<T> tClass,Object...objects){try {connect = getConnect();statement = connect.prepareStatement(sql);if(objects != null && objects.length != 0){for (int i = 0; i < objects.length; i++) {statement.setObject(i+1,objects[i]);}}// 运行查询语句,返回ReaultSet对象,一个结果集合resultSet = statement.executeQuery();ResultSetMetaData metaData = resultSet.getMetaData();List<T> list = new ArrayList<>();// 判断是否有下一行while (resultSet.next()){// 通过反射新建一个对象T t = tClass.getConstructor().newInstance();// metaData.getColumnCount()获取列的行数for (int i = 0; i < metaData.getColumnCount(); i++) {// 通过列的索引获取值Object object = resultSet.getObject(i + 1);// 获取列名String columnName = metaData.getColumnName(i + 1);// 通过列名在反射对象中获取属性Field declaredField = tClass.getDeclaredField(columnName);/* Class<?> type = declaredField.getType();if(type.getName().equals("boolean")){String o = (String)object;if(o.equals("0")){object = false;}else {object = true;}}*/// 打开赋值权限,true代表可赋值的declaredField.setAccessible(true);// 给属性赋值declaredField.set(t,object);}list.add(t);}return list;} catch (SQLException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();} catch (InstantiationException e) {e.printStackTrace();} catch (InvocationTargetException e) {e.printStackTrace();} catch (NoSuchFieldException e) {e.printStackTrace();} catch (NoSuchMethodException e) {e.printStackTrace();} finally {try {closeAll(connect,statement,resultSet);} catch (SQLException e) {e.printStackTrace();}}return Collections.EMPTY_LIST;}// 包装一个方法将关闭资源包装在一个类中用于调用private static void close(Connection connection,PreparedStatement statement) throws SQLException {if(statement != null){statement.close();}if(connection != null){connection.close();}}//private static void closeAll(Connection connection,PreparedStatement statement,ResultSet resultSet) throws SQLException {if(resultSet != null){statement.close();}close(connection,statement);}
}

配置文件如下:
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/数据库名?serverTimezone=Hongkong
也可以简写为url=jdbc:mysql:///数据库名?serverTimezone=Hongkong
account=用户名
passWord=用户密码

有不对或有改善建议建议提出哟!

JDBC mysql数据库连接相关推荐

  1. jdbc mysql分页_JDBC【数据库连接池、DbUtils框架、分页】

    1.数据库连接池 什么是数据库连接池 简单来说:数据库连接池就是提供连接的... 为什么我们要使用数据库连接池 数据库的连接的建立和关闭是非常消耗资源的 频繁地打开.关闭连接造成系统性能低下 编写连接 ...

  2. 基于JDBC的mysql数据库连接

    JDBC(Java DataBase Connection)是基于java的.用于访问关系数据库的一种应用接口.JDBC提供多种数据库驱动程序类型,提供执行SQL语句来曹忠关系数据库的方法,使得jav ...

  3. Mysql数据库连接———JDBC,Java代码

    1.数据库部分 创建数据表customer(客户).deposite(存款).bank(银行),表结构如下: Create Table CREATE TABLE `bank` (   `b_id` c ...

  4. jdbc mysql select_java连接mysql数据库并使用jdbc进行查询详解

    public Connection getCon() { //数据库连接名称 String username="root"; //数据库连接密码 String password=& ...

  5. day04 JDBC java数据库连接

    day04 JDBC java数据库连接 yuxiaohu已关注 2017.12.03 16:12:19字数 139阅读 85 1 导包 mysql 提供的实现java接口的包路径 C:\Progra ...

  6. Tomcat 5.5 配置 MySQL 数据库连接池

    用了最新的几个咚咚,搞了整整一天终于搞清楚了Tomcat 5.5 配置 MySQL 数据库连接池,网上的经验并不能完全用到新环境里面,我写出整个过程以方便大家配置. 1 环境描述 JDK 1.5 To ...

  7. Java -- JDBC 学习--数据库连接池

    JDBC数据库连接池的必要性 在使用开发基于数据库的web程序时,传统的模式基本是按以下步骤: 在主程序(如servlet.beans)中建立数据库连接. 进行sql操作 断开数据库连接. 这种模式开 ...

  8. MySql数据库连接超时处理

    博主在做web开发时遇到MySql数据库连接超时的问题. 控制台报错如下: Request processing failed; nested exception is org.springframe ...

  9. jdbc mysql参数_Mysql JDBC URL中的重要参数有啊些

    以下的文章主要介绍的是Mysql JDBC URL中几个比较重要参数的详细说明,我们大家都知道MySQL数据库中存在JDBC URL几个比较重要参数,此文还将对其具体实例进行介绍,希望大家通过本文能得 ...

最新文章

  1. win10下pycharm安装opencv tensorflow anaconda
  2. oracle 辅助实例,初学rman问题小记三:创建辅助实例遇到的ORA-01031
  3. 2020年安徽赛区智能车竞赛有关事项通知(草案)
  4. Codeforces 164 E Compatible Numbers
  5. c语言中error c2109 是什么错,求c语言改错 error C2109: 下标要求数组或指针类型?...
  6. 父路径_Logtail 新功能:采集路径黑名单
  7. Android之Dialog提示Unable to add window -- token is not valid; is your activity running?
  8. MySQL innodb_page_size
  9. 汇编跳转指令B、BL、BX、BLX 和 BXJ的区别
  10. 有向图的强联通分量 Tarjan算法模板
  11. 找不到匹配的key exchange算法_AC自动机 | 多字符串匹配你会吗?
  12. 在eclipse上安装lomboz插件
  13. Docker运维笔记-Docker端口映射
  14. 用数据说话:北京房价数据背后的数据
  15. java 滚动歌词_基于JavaScript怎么实现让歌词滚动播放
  16. 大三下了,一点感概,仅作共勉
  17. (构造+二进制)2020牛客寒假算法基础集训营3B.牛牛的DRB迷宫II
  18. 编写一个c语言程序 杨辉三角,杨辉三角 c语言
  19. 小试牛刀【自己翻译】
  20. 【JS基础】立即执行函数表达式(自执行函数)

热门文章

  1. 第十八天2019.8.22
  2. 苹果发布新的 Swift Server 框架:Swift Cluster Membership,这次的目标是集群
  3. 阿里云服务器1核1G1M宽带可以支持多少IP访问量?
  4. 中考大数据大连79_中考大数据 | 大连各初中2017中考成绩统计④(格致和79中)附:中考加分降分政策...
  5. 直播app源码,Java的输入输出
  6. 初识Java 超详细的万字入门介绍
  7. tomcat假死排查-数据连接池耗尽
  8. Android的onDestroy方法,Android:onDestroy()或Application类中的类似方法
  9. Linux新手:win10内置Linux一键安装
  10. 详细说说hook Api技术