基于JDBC访问MySql公共方法实例解析

 更新时间:2020年10月31日 16:06:28   作者:cuisuqiang  
这篇文章主要介绍了基于JDBC访问MySql公共方法实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

本来项目都是用到例如Hibernate这些工具的,可是因为现在项目要求现在又丫的回到基于JDK的解决方案了。

这个方法很简单,但是对于数据的连接使用连接池,连接池也是直接初始化的。

package com;
import java.sql.*;
import java.util.*;
import org.apache.commons.dbcp.BasicDataSource;
/**
 * @说明 数据库连接管理
 * @author cuisuqiang
 */
public class ConnectionManager {
	/**
	 * @说明 执行一条SQL
	 */
	@SuppressWarnings("unchecked")
	public static List<Object[]> excuteQuery(String sql) {
		Connection conn = null;
		PreparedStatement psta = null;
		ResultSet resultSet = null;
		List<Object[]> relist = new ArrayList<Object[]>(); // 总数据
		Object[] objects = null; // 每行数据
		try {
			conn = ConnectionManager.getConn(); // 得到链接
			if(null != conn){
				psta = conn.prepareStatement(sql);
				resultSet = psta.executeQuery(); // 执行查询,返回结果接集合
				int count = resultSet.getMetaData().getColumnCount(); // 一共有多少列数据
				// 循环行
				while (resultSet.next()) {
					objects = new Object[count];
					// 数据集索引从 1 开始,而数组存放时是从 0 开始
					for (int i = 1; i <= count; i++) {
						objects[i - 1] = resultSet.getObject(i);
					}
					relist.add(objects);
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
			relist = null;
		} finally {
			try {
				if(null != resultSet)
					resultSet.close();
				if(null != psta)
					psta.close();
				if(null != conn)
					conn.close();
			} catch (Exception e2) {
				
			}
		}
		return relist;
	}
	private static org.apache.commons.dbcp.BasicDataSource ds = null;
	static {
		ds = new BasicDataSource(); // 组建数据源对象
		int initialSize = 1; // 连接池启动时的初始值
		int maxActive = 10; // 连接池的最大值
		int maxIdle = 1;   // 最大空闲值
		int minIdle = 1;   // 最小空闲值
		ds.setDriverClassName("com.mysql.jdbc.Driver");
		ds.setUrl("jdbc:mysql://192.168.154.128:3306/t2?useUnicode=true&characterEncoding=gbk");
		ds.setUsername("root");
		ds.setPassword("123456");
		ds.setInitialSize(initialSize);
		ds.setMaxActive(maxActive);
		ds.setMaxIdle(maxIdle);
		ds.setMinIdle(minIdle);
	}
	/**
	 * 从数据源中取得数据库连接
	 */
	public static Connection getConn() {
		try {
			return ds.getConnection();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return null;
	}
}

我使用的是BasicDataSource,你可能需要两个Jar包,commons-pool.jar,commons-dbcp.jar,连接mysql的话需要mysql-connector-java-3.1.13-bin.jar。

写一个mian方法直接测试:

package com; 
import java.util.List; 
public class T { 
  @SuppressWarnings("unchecked") 
  public static void main(String[] args) { 
    try { 
      List<Object[]> list = ConnectionManager.excuteQuery("select * from t"); 
      for (int i = 0; i < list.size(); i++) { 
        Object[] os = list.get(i); 
        for(Object o : os){ 
          if (o instanceof String) { 
            String s = (String) o; 
            String newStr = new String(s.getBytes("ISO-8859-1"),"GBK"); 
            System.out.print("字符串:" + newStr + "\t\t"); 
          }else if(o instanceof Long){ 
            Long s = (Long) o; 
            System.out.print("浮点值:" + s + "\t\t"); 
          }else if(o instanceof Integer){ 
            Integer s = (Integer) o; 
            System.out.print("整形值:" + s + "\t\t"); 
          }else{ 
            System.out.print("未知型:" + o + "\t\t"); 
          } 
        } 
        System.out.println(); 
      } 
    } catch (Exception e) { 
      e.printStackTrace(); 
    }     
  } 
}

我返回的是一个List集合,里面包含了一个Object数组。调用者在收到这个返回集合后可以根据实际情况进行解析,公共方法只是执行SQL,然后得到数据连接进行数据访问。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Springboot引入拦截器并放行swagger代码实例

    Springboot引入拦截器并放行swagger代码实例

    这篇文章主要介绍了Springboot引入拦截器并放行swagger代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • maven插件assembly使用及springboot启动脚本start.sh和停止脚本 stop.sh

    maven插件assembly使用及springboot启动脚本start.sh和停止脚本 stop.sh

    这篇文章主要介绍了maven插件assembly使用及springboot启动脚本start.sh和停止脚本 stop.sh的相关资料,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • JAVA获取rabbitmq消息总数过程详解

    JAVA获取rabbitmq消息总数过程详解

    这篇文章主要介绍了JAVA获取rabbitmq消息总数过程详解,公司使用的是rabbitMQ,需要做监控预警的job去监控rabbitMQ里面的堆积消息个数,如何使用rabbitMQ获取监控的队列里面的队列消息个数呢,需要的朋友可以参考下
    2019-07-07
  • 详解Java中如何定义和访问静态字段和方法

    详解Java中如何定义和访问静态字段和方法

    在面向对象的程序设计中,我们通常使用类来创建对象,类中有许多成员变量和方法,它们是直接属于对象实例的,与之对应的还有一类成员,那就是静态成员,本文就来和大家聊聊Java是如何定义访问静态成员的吧
    2023-05-05
  • Java线程池的几种实现方法及常见问题解答

    Java线程池的几种实现方法及常见问题解答

    下面小编就为大家带来一篇Java线程池的几种实现方法及常见问题解答。小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-05-05
  • JAVA构造函数(方法)示例详解

    JAVA构造函数(方法)示例详解

    构造函数,是一种特殊的方法,主要用来在创建对象时初始化对象,即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中,这篇文章主要给大家介绍了关于JAVA构造函数(方法)的相关资料,需要的朋友可以参考下
    2021-11-11
  • java基于mongodb实现分布式锁的示例代码

    java基于mongodb实现分布式锁的示例代码

    本文主要介绍了java基于mongodb实现分布式锁,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • 浅析Java8新特性Lambda表达式和函数式接口

    浅析Java8新特性Lambda表达式和函数式接口

    Lambda表达式理解为是 一段可以传递的代码。最直观的是使用Lambda表达式之后不用再写大量的匿名内部类,简化代码,提高了代码的可读性
    2017-08-08
  • Java判断一个字符串是不是一个数字的解决思路

    Java判断一个字符串是不是一个数字的解决思路

    这篇文章主要给大家介绍了关于Java判断一个字符串是不是一个数字的解决思路,判断一个字符串是否为数字是Java开发中很常见的业务需求,实现这个判断有很多种方式,需要的朋友可以参考下
    2023-08-08
  • java匿名内部类实例简析

    java匿名内部类实例简析

    匿名类是不能有名称的类,所以没办法引用它们,必须在创建时,作为new语句的一部分来声明它们,需要了解更多的可以参考本文
    2012-11-11

最新评论