当前位置: 首页 > news >正文

mysql、oracle的JDBC操作

package com.catarc.paramanalysis.util;import org.apache.commons.dbcp2.BasicDataSource;import java.sql.*;
import java.util.*;
import javax.sql.DataSource;/*** MySQL JDBC 工具类* 功能:连接管理、CRUD操作、事务控制、连接池*/
public class MySQLUtils {// 连接池数据源private static DataSource dataSource;// 初始化连接池static {try {BasicDataSource ds = new BasicDataSource();ds.setDriverClassName("com.mysql.cj.jdbc.Driver");ds.setUrl("jdbc:mysql://888.88.888.888:4417/param_analysis?useSSL=false&serverTimezone=UTC");ds.setUsername("888");ds.setPassword("888888");ds.setInitialSize(5);      // 初始连接数ds.setMaxTotal(20);        // 最大连接数ds.setMaxIdle(10);         // 最大空闲连接ds.setMinIdle(5);          // 最小空闲连接ds.setMaxWaitMillis(5000); // 获取连接最大等待时间(毫秒)dataSource = ds;} catch (Exception e) {throw new ExceptionInInitializerError("初始化连接池失败: " + e.getMessage());}}/*** 获取数据库连接*/public static Connection getConnection() throws SQLException {return dataSource.getConnection();}/*** 释放资源*/public static void close(Connection conn, Statement stmt, ResultSet rs) {try {if (rs != null) rs.close();if (stmt != null) stmt.close();if (conn != null) conn.close();} catch (SQLException e) {e.printStackTrace();}}/*** 执行查询(返回List<Map>)*/public static List<Map<String, Object>> queryForList(String sql, Object... params) {List<Map<String, Object>> list = new ArrayList<>();Connection conn = null;PreparedStatement pstmt = null;ResultSet rs = null;try {conn = getConnection();pstmt = conn.prepareStatement(sql);// 设置参数for (int i = 0; i < params.length; i++) {pstmt.setObject(i + 1, params[i]);}rs = pstmt.executeQuery();ResultSetMetaData metaData = rs.getMetaData();int columnCount = metaData.getColumnCount();while (rs.next()) {Map<String, Object> row = new LinkedHashMap<>();for (int i = 1; i <= columnCount; i++) {row.put(metaData.getColumnLabel(i), rs.getObject(i));}list.add(row);}} catch (SQLException e) {e.printStackTrace();} finally {close(conn, pstmt, rs);}return list;}/*** 执行查询(返回单个Map)*/public static Map<String, Object> queryForMap(String sql, Object... params) {List<Map<String, Object>> list = queryForList(sql, params);return list.isEmpty() ? null : list.get(0);}/*** 执行更新(INSERT/UPDATE/DELETE)*/public static int update(String sql, Object... params) {Connection conn = null;PreparedStatement pstmt = null;int result = 0;try {conn = getConnection();pstmt = conn.prepareStatement(sql);for (int i = 0; i < params.length; i++) {pstmt.setObject(i + 1, params[i]);}result = pstmt.executeUpdate();} catch (SQLException e) {e.printStackTrace();} finally {close(conn, pstmt, null);}return result;}/*** 批量更新*/public static int[] batchUpdate(String sql, List<Object[]> paramsList) {Connection conn = null;PreparedStatement pstmt = null;int[] result = null;try {conn = getConnection();pstmt = conn.prepareStatement(sql);for (Object[] params : paramsList) {for (int i = 0; i < params.length; i++) {pstmt.setObject(i + 1, params[i]);}pstmt.addBatch();}result = pstmt.executeBatch();} catch (SQLException e) {e.printStackTrace();} finally {close(conn, pstmt, null);}return result;}/*** 执行事务*/public static boolean executeTransaction(TransactionCallback callback) {Connection conn = null;boolean result = false;try {conn = getConnection();conn.setAutoCommit(false);// 执行回调result = callback.doInTransaction(conn);if (result) {conn.commit();} else {conn.rollback();}} catch (SQLException e) {try {if (conn != null) conn.rollback();} catch (SQLException ex) {ex.printStackTrace();}e.printStackTrace();} finally {try {if (conn != null) conn.setAutoCommit(true);} catch (SQLException e) {e.printStackTrace();}close(conn, null, null);}return result;}/*** 事务回调接口*/public interface TransactionCallback {boolean doInTransaction(Connection conn) throws SQLException;}
}

这样用
List<Map<String, Object>> batch = MySQLUtils.queryForList(sql, currentId,endId, batchSize);

package com.catarc.paramanalysis.util;import org.apache.commons.dbcp2.BasicDataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.stereotype.Component;import javax.sql.DataSource;
import java.sql.*;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;/*** Oracle JDBC 工具类* 功能:连接管理、CRUD操作、事务控制、连接池*/
@Component
public class OracleUtils implements ApplicationListener<ContextRefreshedEvent> {// 连接池数据源(静态字段,全局唯一)private static DataSource dataSource;// 配置参数(实例字段,通过@Value注入)@Value("${oracle.driverClassName}")private String driverClassName;@Value("${oracle.url}")private String url;@Value("${oracle.username}")private String username;@Value("${oracle.password}")private String password;@Value("${oracle.defaultSchema:}")private String defaultSchema;// 监听Spring上下文初始化完成事件@Overridepublic void onApplicationEvent(ContextRefreshedEvent event) {// 确保只初始化一次(避免父子容器重复触发)if (dataSource == null) {try {BasicDataSource ds = new BasicDataSource();ds.setDriverClassName(driverClassName);ds.setUrl(url);ds.setUsername(username);ds.setPassword(password);// 连接池配置ds.setInitialSize(5);ds.setMaxTotal(20);ds.setMaxIdle(10);ds.setMinIdle(5);ds.setMaxWaitMillis(5000);// 设置默认Schema(非必需)if (defaultSchema != null && !defaultSchema.isEmpty()) {ds.setDefaultSchema(defaultSchema);}// 验证连接有效性ds.setTestOnBorrow(true);ds.setValidationQuery("SELECT 1 FROM DUAL");dataSource = ds;System.out.println("Oracle连接池初始化成功");} catch (Exception e) {throw new RuntimeException("初始化Oracle连接池失败: " + e.getMessage(), e);}}}/*** 获取数据库连接(直接访问静态dataSource)*/public static Connection getConnection() throws SQLException {if (dataSource == null) { // 检查数据源是否已初始化throw new SQLException("Oracle连接池未初始化,请检查Spring配置或上下文是否加载完成");}return dataSource.getConnection();}/*** 释放资源*/public static void close(Connection conn, Statement stmt, ResultSet rs) {try {if (rs != null) rs.close();if (stmt != null) stmt.close();if (conn != null) conn.close(); // 连接池环境下实际是归还连接} catch (SQLException e) {e.printStackTrace();}}/*** 执行查询(返回List<Map>)*/public static List<Map<String, Object>> queryForList(String sql, Object... params) {List<Map<String, Object>> list = new ArrayList<>();Connection conn = null;PreparedStatement pstmt = null;ResultSet rs = null;try {conn = getConnection();pstmt = conn.prepareStatement(sql);// 设置参数(Oracle参数索引从1开始)for (int i = 0; i < params.length; i++) {pstmt.setObject(i + 1, params[i]);}rs = pstmt.executeQuery();ResultSetMetaData metaData = rs.getMetaData();int columnCount = metaData.getColumnCount();while (rs.next()) {Map<String, Object> row = new LinkedHashMap<>();for (int i = 1; i <= columnCount; i++) {row.put(metaData.getColumnLabel(i), rs.getObject(i));}list.add(row);}} catch (SQLException e) {e.printStackTrace();} finally {close(conn, pstmt, rs);}return list;}/*** 执行查询(返回单个Map)*/public static Map<String, Object> queryForMap(String sql, Object... params) {List<Map<String, Object>> list = queryForList(sql, params);return list.isEmpty() ? null : list.get(0);}/*** 执行更新(INSERT/UPDATE/DELETE)*/public static int update(String sql, Object... params) {Connection conn = null;PreparedStatement pstmt = null;int result = 0;try {conn = getConnection();pstmt = conn.prepareStatement(sql);for (int i = 0; i < params.length; i++) {pstmt.setObject(i + 1, params[i]);}result = pstmt.executeUpdate();} catch (SQLException e) {e.printStackTrace();} finally {close(conn, pstmt, null);}return result;}/*** 批量更新*/public static int[] batchUpdate(String sql, List<Object[]> paramsList) {Connection conn = null;PreparedStatement pstmt = null;int[] result = null;try {conn = getConnection();pstmt = conn.prepareStatement(sql);for (Object[] params : paramsList) {for (int i = 0; i < params.length; i++) {pstmt.setObject(i + 1, params[i]);}pstmt.addBatch();}result = pstmt.executeBatch();} catch (SQLException e) {e.printStackTrace();} finally {close(conn, pstmt, null);}return result;}/*** 执行事务*/public static boolean executeTransaction(TransactionCallback callback) {Connection conn = null;boolean result = false;try {conn = getConnection();conn.setAutoCommit(false); // 关闭自动提交,开启事务result = callback.doInTransaction(conn);if (result) {conn.commit();} else {conn.rollback();}} catch (SQLException e) {try {if (conn != null) conn.rollback();} catch (SQLException ex) {ex.printStackTrace();}e.printStackTrace();} finally {try {if (conn != null) {conn.setAutoCommit(true);}} catch (SQLException e) {e.printStackTrace();}close(conn, null, null);}return result;}/*** 事务回调接口*/public interface TransactionCallback {boolean doInTransaction(Connection conn) throws SQLException;}
}

这样用

List<Map<String, Object>> maps = OracleUtils.queryForList(“select * from job_zj_statisticalnumber where staticnumber = ?”, after.getStaticNumber());

http://www.dtcms.com/a/521247.html

相关文章:

  • 数码电子产品网站建设策划书网站建设推广价格
  • 高端网站设计价格成品网站和模板建站
  • vTaskDelete 的作用
  • 【笔记】ComfyUI KeyError: ‘tensorrt‘ 错误的完整解决方案
  • 网站下载软件wordpress修改上传文件路径
  • 加盟招商网站建设方案木卢seo教程
  • 【javaFX基础】实现图形能够根据窗口大小自动调整位置
  • 针对餐饮公司推广做网站方法河间网站
  • 接口和继承类的对比
  • 瑞安自适应网站建设建设一个公司的网站需要多少钱
  • 婚庆网站哪个网站好手机网站的好处
  • RCLAMP2402B.TCT ESD保护二极管/TVS二极管 Semtech升特 电路保护方案解析
  • 广东网站优化公司上海seo优化服务公司
  • 索引失效的问题如何排查?
  • 小九源码-springboot099-基于Springboot的本科实践教学管理系统
  • 单位网站设计建议书世界500强企业排行榜
  • 深圳制作网站多少费用电子商务有哪些职业
  • 【Spring Security】授权(二)
  • 塘沽网站开发企业站网页制作实训步骤
  • jsp电影网站开发教程单位外部网站建设价格
  • 哈尔滨住房和城乡建设厅网站做网站原型现成的框架
  • 做网站实现发送信息功能号卡分销系统源码
  • 用Python Streamlit Sqlite3 写一个简单商品管理系统
  • LazyLLM 创新实践:LLM 与工具协同,构建智能客服问答与知识库检索助手
  • 网站主体负责人邮箱wordpress国外空间
  • 网站建设公制度网页设计与制作实训报告两千字
  • 算力赋能,智见未来 | 国鑫亮相ICG-20,共赴组学与AI新纪元
  • 阿里巴巴网站的功能win 无法卸载 wordpress
  • 慧园区:科技赋能下的城市空间新范式
  • 网站建设费一般是什么费用网页设计的背景代码大全