用到的 jar 包

jar包地址:

mysql-connector-java-5.1.47.jar

junit-4.13.jar

Maven:

<!--  mysql驱动  -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<!-- 单元测试 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13</version>
</dependency>

MySQL 配置文件

db.properties,这个配置文件在 BaseDao.java 会去读取

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/smbms?useUnicode=true&characterEncoding=UTF-8
username=root
password=123456

BaseDao.java 公共类

通过读取 db.properties 的配置信息连接 MySQL,也可以直接在 static 静态代码块里面写死你的 mysql 配置信息

package com.pro.dao;

import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties; // 操作数据库公共类
public class BaseDao {
private static String driver;
private static String url;
private static String username;
private static String password; // 静态代码块类一加载就已经初始化了
static {
Properties properties = new Properties(); // 通过类加载器加载对应的资源
InputStream is = BaseDao.class.getResourceAsStream("/db.properties");
System.out.println("资源路径 --> " + is); try {
properties.load(is);
} catch (IOException e) {
e.printStackTrace();
} // 读取数据, 初始化 mysql 配置信息
driver = properties.getProperty("driver");
url = properties.getProperty("url");
username = properties.getProperty("username");
password = properties.getProperty("password");
} // 获取连接数据库对象
public static Connection getConnection() {
Connection connection = null; try {
// 加载驱动
Class.forName(driver);
// 获取数据库对象
connection = DriverManager.getConnection(url, username, password);
} catch (Exception e) {
e.printStackTrace();
} return connection;
} // 查询公共方法
public static ResultSet execute(Connection connection, PreparedStatement preparedStatement, ResultSet resultSet, String sql, Object[] params) throws SQLException {
// 预编译SQL
preparedStatement = connection.prepareStatement(sql); // 添加参数
for (int i = 0; i < params.length; i++) {
preparedStatement.setObject(i + 1, params[i]);
} // 执行sql
resultSet = preparedStatement.executeQuery(); return resultSet;
} // 增删改公共方法
public static int execute(Connection connection, PreparedStatement preparedStatement, String sql, Object[] params) throws SQLException {
int updateRows = 0;
// 预编译SQL
preparedStatement = connection.prepareStatement(sql); // 添加参数
for (int i = 0; i < params.length; i++) {
preparedStatement.setObject(i + 1, params[i]);
} // 执行sql
updateRows = preparedStatement.executeUpdate(); return updateRows;
} // 关闭资源公共方法
public static boolean closeResource(ResultSet resultSet, PreparedStatement preparedStatement, Connection connection) {
boolean flag = true; if (resultSet != null) {
try {
// 关闭资源
resultSet.close();
// GC 回收
resultSet = null;
} catch (SQLException throwables) {
throwables.printStackTrace();
flag = false;
}
} if (preparedStatement != null) {
try {
// 关闭资源
preparedStatement.close();
// GC 回收
preparedStatement = null;
} catch (SQLException throwables) {
throwables.printStackTrace();
flag = false;
}
} if (connection != null) {
try {
// 关闭资源
connection.close();
// GC 回收
connection = null;
} catch (SQLException throwables) {
throwables.printStackTrace();
flag = false;
}
} return flag;
}
}

测试使用

使用 junit 进行单元测试,也可以直接放到 main 方法中去执行测试

import org.junit.Test;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet; public class Test {
@Test
public void test() {
Connection connection = BaseDao.getConnection();
PreparedStatement pstm = null;
ResultSet res = null; // SQL
String sql = "select * from smbms_user";
// 参数
Object[] params = {}; try {
// 执行SQL
res = BaseDao.execute(connection, pstm, res, sql, params); // 打印参数
while (res.next()) {
System.out.println(res.getString("userName"));
}
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}

Java 基于 mysql-connector-java 编写一个 JDBC 工具类的更多相关文章

  1. 【JDBC】Java 连接 MySQL 基本过程以及封装数据库工具类

    一. 常用的JDBC API 1. DriverManager类 : 数据库管理类,用于管理一组JDBC驱动程序的基本服务.应用程序和数据库之间可以通过此类建立连接.常用的静态方法如下 static ...

  2. Java连接MySQL数据库。编写一个应用程序,在主类Test_4类中,通过JDBC访问stu数据库,显示t_student表中的内容(表结构见表1),显示效果自己设计。

    题目2:编写一个应用程序,在主类Test_4类中,通过JDBC访问stu数据库,显示t_student表中的内容(表结构见表1),显示效果自己设计.之后,可根据显示的内容进行某条记录的删除(以id为条 ...

  3. 编写一个数组工具类, 编写本软件的 帮助文档(API文档)

    本文档是对静态成员的练习. 一. 建立一个ArrayTool(数组工具)的类,在此类中对传入数组进行一些操作(选最大值.先最小值.冒泡排正序.选择排反序.输出数组元素), 二. 建立一个Test的类, ...

  4. 自定义的一个JDBC工具类

    package JDBCutils; import java.io.File;import java.io.FileInputStream;import java.sql.Connection;imp ...

  5. jdbc 11: 封装自己的jdbc工具类

    jdbc连接mysql,封装自己的jdbc工具类 package com.examples.jdbc.utils; import java.sql.*; import java.util.Resour ...

  6. java使用注解和反射打造一个简单的jdbc工具类

    a simple jdbc tools 如有转载和引用,请注明出处,谢谢 1. 定义我们需要的注解 要想实现对数据库的操作,我们必须知道数据表名以及表中的字段名称以及类型,正如hibernate 使用 ...

  7. Mybatis异常处理之MySQL Connector Java] will not be managed by Spring

    很长时间没写后台代码有点生疏了,这不今天又出点小插曲,写个文章记录下. 由于要上传点数据到后台,顺手整了个mybatis+springmvc.在保存数据时出现了异常. Creating a new S ...

  8. 编写Java程序,创建一个数学工具类,将该类设计为final类,Final 修饰符的使用。

    返回本章节 返回作业目录 需求说明: 创建一个数学工具类. 将该类设计为final类. 将该类的构造方法的访问权限定义为私有,以防止外界实例化该类. 在该类定义静态double类型常量π,其值为3.1 ...

  9. 利用JDBC工具类添加和查询数据-Java(新手)

    JDBC工具类: 1 package cn.lxr.jdbclx; 2 3 import java.sql.*; 4 5 public class JDBCUtils { 6 private stat ...

随机推荐

  1. maven打包package时出现错误

    Some problems were encountered while building the effective model for com.ecjtu:adopt:war:1.0-SNAPSH ...

  2. I/O-基本概念

    目录 演变过程 I/O系统基本组成 I/O接口 I/O方式简介 小结 演变过程 I/O系统基本组成 分成软件和硬件 I/O接口 接口可以看作是两个部件之间的交接部分 I/O方式简介 小结

  3. 【转载】Django,学习笔记

    [转自]https://www.cnblogs.com/jinbchen/p/11133225.html Django知识笔记   基本应用 创建项目: django-admin startproje ...

  4. 开源抓包工具PowerSniff(支持lua,c语言作为脚本实时分析)

    做这个程序的意图是wireshark插件编写复杂(虽然也支持lua),而轻量级的工具如smartsniff,minisniff不支持插件化数据分析,各种工具用下来或多或少不顺手.以前写的外挂也都是手工 ...

  5. mycat启动失败

    1.问题 使用mycat配置主从读写分离,启动mycat报错信息如下: STATUS | wrapper | 2020/06/17 17:00:11 | --> Wrapper Started ...

  6. 手写算法-python代码实现KNN

    原理解析 KNN-全称K-Nearest Neighbor,最近邻算法,可以做分类任务,也可以做回归任务,KNN是一种简单的机器学习方法,它没有传统意义上训练和学习过程,实现流程如下: 1.在训练数据 ...

  7. win7开机登录界面壁纸修改

    1.选择一张自己喜欢的图(一定要是jpg格式,亲测png格式不行),分辨率最好和自己电脑的分辨率差不多. 2.将图片改名为"backgroundDefault.jpg": 3.按下 ...

  8. python初学者-使用for循环用四位数组成不同的数

    digits = (1,2,3,4) for i in digits: for j in digits: if j==i: continuefor k in digits: if k==i or k= ...

  9. 将两个ListMap中同下标的map去重合并

    public static void main(String[] args) { Map<String,Object> oneMap = new HashMap<>(); on ...

  10. 常见数据库的JDBC URL

    转自:http://blog.csdn.net/ring0hx/article/details/6152528 Microsoft SQL Server Microsoft SQL Server JD ...