JDBC数据库操作公共类

8 篇文章 0 订阅
本文介绍了SpringBoot中的一个JDBCUtils类,它包含了数据库连接管理、SQL查询与操作的方法,如执行增删改查和获取单个值,通过读取配置文件加载数据库连接信息。
摘要由CSDN通过智能技术生成
package com.springboot.spirngbootjdbc.utils;

import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;

/**
 * JDBC数据库操作公共类
 *
 */
public class JDBCUtils {
	private static String DRIVER_CLASS; // 数据库驱动
	private static String DB_URL; // 数据库连接地址
	private static String DB_USER; // 数据库用户名称
	private static String DB_PASSWORD;// 数据库用户密码

	/**
	 * 静态代码块加载配置文件信息与数据库驱动类
	 */
	static {
		try {
			// 创建Properties类对象
			Properties properties = new Properties();

			// 读取db.properties属性文件到输入流中
			InputStream is = JDBCUtils.class.getResourceAsStream("/application.properties");

			// 从输入流中加载属性列表
			properties.load(is);

			// 获取数据库连接属性值
			DRIVER_CLASS = properties.getProperty("DRIVER_CLASS");
			DB_URL = properties.getProperty("DB_URL");
			DB_USER = properties.getProperty("DB_USER");
			DB_PASSWORD = properties.getProperty("DB_PASSWORD");

			// 加载数据库驱动类
			Class.forName(DRIVER_CLASS);

		} catch (ClassNotFoundException cnfe) {
			cnfe.printStackTrace();
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}

	/**
	 * 获取数据库连接
	 *
	 * @return 数据库连接对象
	 */
	public Connection getConnection() {
		Connection conn = null;

		try {
			// 获取数据库连接对象
			conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);
//			System.out.println(conn!=null?"conn is not null":"conn is null");
		} catch (SQLException sqle) {
			sqle.printStackTrace();
		}

		return conn;
	}

	/**
	 * 查询列表
	 *
	 * @param sql 查询SQL语句
	 * @return 结果集
	 */
	public ResultSet executeQuery(String sql) {
		Connection conn = null;
		PreparedStatement preStmt = null;
		ResultSet res = null;

		try {
			conn = getConnection();
			preStmt = conn.prepareStatement(sql);
			res = preStmt.executeQuery();

		} catch (SQLException sqle) {
			sqle.printStackTrace();
			closeResource(res, preStmt, conn);
		}

		return res;
	}

	/**
	 * 查询列表
	 *
	 * @param sql    查询SQL语句
	 * @param params 参数集合
	 * @return 结果集
	 */
	public ResultSet executeQuery(String sql, List<Object> params) {
		Connection conn = null;
		PreparedStatement preStmt = null;
		ResultSet res = null;

		try {
			conn = getConnection();
			preStmt = conn.prepareStatement(sql);
			setParams(preStmt, params);
			res = preStmt.executeQuery();

		} catch (SQLException sqle) {
			sqle.printStackTrace();
			closeResource(res, preStmt, conn);
		}

		return res;
	}

	/**
	 * 执行操作
	 *
	 * @param sql 执行SQL语句
	 * @return 受影响条数
	 */
	public int executeOperate(String sql) {
		int count = 0;
		Connection conn = null;
		PreparedStatement preStmt = null;

		try {
			conn = getConnection();
			preStmt = conn.prepareStatement(sql);
			count = preStmt.executeUpdate();

		} catch (SQLException sqle) {
			sqle.printStackTrace();
		} finally {
			closeResource(preStmt, conn);
		}

		return count;
	}

	/**
	 * 执行操作
	 *
	 * @param sql    执行SQL语句
	 * @param params 参数集合
	 * @return 受影响条数
	 */
	public int executeOperate(String sql, List<Object> params) {
		int count = 0;
		Connection conn = null;
		PreparedStatement preStmt = null;

		try {
			conn = getConnection();
			preStmt = conn.prepareStatement(sql);
			setParams(preStmt, params);
			count = preStmt.executeUpdate();

		} catch (SQLException sqle) {
			sqle.printStackTrace();
		} finally {
			closeResource(preStmt, conn);
		}

		return count;
	}

	/**
	 * 执行返回单个值
	 *
	 * @param sql 执行SQL语句
	 * @return 单个值
	 */
	public Object executeScalar(String sql) {
		Object resObj = null;
		Connection conn = null;
		PreparedStatement preStmt = null;
		ResultSet res = null;

		try {
			conn = getConnection();
			preStmt = conn.prepareStatement(sql);
			res = preStmt.executeQuery();
			if (res.next()) {
				resObj = res.getObject(1);
			}

		} catch (SQLException sqle) {
			sqle.printStackTrace();
		} finally {
			closeResource(res, preStmt, conn);
		}

		return resObj;
	}

	/**
	 * 执行返回单个值
	 *
	 * @param sql    执行SQL语句
	 * @param params 参数集合
	 * @return 单个值
	 */
	public Object executeScalar(String sql, List<Object> params) {
		Object resObj = null;
		Connection conn = null;
		PreparedStatement preStmt = null;
		ResultSet res = null;

		try {
			conn = getConnection();
			preStmt = conn.prepareStatement(sql);
			setParams(preStmt, params);
			res = preStmt.executeQuery();
			if (res.next()) {
				resObj = res.getObject(1);
			}

		} catch (SQLException sqle) {
			sqle.printStackTrace();
		} finally {
			closeResource(res, preStmt, conn);
		}

		return resObj;
	}

	/**
	 * 释放资源
	 *
	 * @param res ResultSet对象
	 */
	public void closeResource(ResultSet res) {
		try {
			// 关闭ResultSet对象
			if (res != null) {
				res.close();
			}

		} catch (SQLException sqle) {
			sqle.printStackTrace();
		}
	}

	/**
	 * 释放资源
	 *
	 * @param stmt Statement对象
	 * @param conn Connection对象
	 */
	public void closeResource(Statement stmt, Connection conn) {
		try {
			// 关闭Statement对象
			if (stmt != null) {
				stmt.close();
			}

			// 关闭Connection对象
			if (conn != null) {
				conn.close();
			}

		} catch (SQLException sqle) {
			sqle.printStackTrace();
		}
	}

	/**
	 * 释放资源
	 *
	 * @param res  ResultSet对象
	 * @param stmt Statement对象
	 * @param conn Connection对象
	 */
	public void closeResource(ResultSet res, Statement stmt, Connection conn) {
		try {
			// 关闭ResultSet对象
			if (res != null) {
				res.close();
			}

			// 关闭Statement对象
			if (stmt != null) {
				stmt.close();
			}

			// 关闭Connection对象
			if (conn != null) {
				conn.close();
			}

		} catch (SQLException sqle) {
			sqle.printStackTrace();
		}
	}

	/**
	 * 设置预处理的参数
	 *
	 * @param preStmt 预处理
	 * @param params  参数集合
	 * @throws SQLException
	 */
	public void setParams(PreparedStatement preStmt, List<Object> params) throws SQLException {
		if (params != null && params.size() > 0) {
			for (int i = 0; i < params.size(); i++) {
				preStmt.setObject(i + 1, params.get(i));
			}
		}
	}

	public static void main(String[] args) {
		String sql = "insert into user(`username`,`password`) values(?,?)";
		List<Object> list = new ArrayList<>();
		list.add("lisi");
		list.add("123456");
		new JDBCUtils().executeOperate(sql,list);
	}
}

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浮生若梦01

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值