javaweb中调用mysql线程池

1.需要两个jar包,网盘下载地址commons-dbcp2-2.4.0.jar,链接:https://pan.baidu.com/s/10708-M4GPAEgW0W8ar6c0Q
提取码:m444
commons-pool2-2.8.0.jar网盘下载地址,链接:https://pan.baidu.com/s/1N3Mpff1S5X2Wc_pgoBaMOQ
提取码:rult

2.创建线程池公共类JdbcUtilPool.java


import java.sql.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Properties;

import javax.sql.DataSource;

import org.apache.commons.dbcp2.BasicDataSourceFactory;


public class JdbcUtilPool {
	private static DataSource pool;
    
    static{
 
        try {
            //读取配置文件
            Properties p = new Properties();
            p.setProperty("driverClassName", "com.mysql.cj.jdbc.Driver");
            p.setProperty("url", "jdbc:mysql://localhost:3306/mydatabase?serverTimezone=UTC");
         
            p.setProperty("username", "root");
            p.setProperty("password", "123123123");
            p.setProperty("maxActive", "30");
            p.setProperty("maxIdle", "30");
            p.setProperty("maxWait", "1000");
            p.setProperty("removeAbandoned", "true");
            p.setProperty("removeAbandonedTimeout", "180");
            
            //p.load(JdbcUtilPool.class.getResourceAsStream("dbcp.properties"));// 配置文件和当前类的class放在一起
            pool = BasicDataSourceFactory.createDataSource(p);
            
            
        } catch (Exception e) {
            e.printStackTrace();
        } 
    }
 
    //返回DataSource--池
    public static DataSource getDataSource(){
        return pool;
    }
 
    public static Connection getConnection() throws SQLException{
       
    	Connection con = pool.getConnection();
    	
        System.out.println("连接数据库:"+con.hashCode());
        return con;
    }

   
    /**
     * 查询语句
     * @param sql sql语句
     * @param parms 占位符参数数组
     * @return 返回List<Object[]>
     */
    public static List<Object[]> select(String sql, String[] parms) {
    	PreparedStatement preparedStatement=null;
    	Connection connection=null;
        try {
            //获取连接
        	
            connection = getConnection();
            preparedStatement = connection.prepareStatement(sql);
            //对sql中的占位符进行赋值
            if (parms != null && parms.length > 0) {
                for (int i = 0; i < parms.length; i++) {
                    if("null".equals(parms[i])){
                        preparedStatement.setNull(i + 1, Types.NULL);
                    }else {
                        preparedStatement.setString(i + 1, parms[i]);
                    }
                }
            }
            //获得结果集合
            ResultSet resultSet = preparedStatement.executeQuery();
            ResultSetMetaData metaData = resultSet.getMetaData();
            //定义List存放每行数据
            List<Object[]> objectList = new ArrayList<>();
            //获取列数
            int columnCount = metaData.getColumnCount();
            //对结果集合进行遍历并将每行的数据存入Object[]中
            while (resultSet.next()) {
                //对象数组,表示一行数据
                Object[] objects = new Object[columnCount];
                for (int i = 1; i <= columnCount; i++) {
                    objects[i - 1] = resultSet.getObject(i);
                }
                //将数组存入list
                objectList.add(objects);
            }
            return objectList;
        } catch (Exception e) {
            System.err.println("查询失败!");
            e.printStackTrace();
        } finally {
        	if(preparedStatement!=null) {
	    		try {
	    			preparedStatement.close();
				} catch (Exception e2) {
					e2.printStackTrace(); 
				}
	    	}
        	
        	if(connection!=null) {
	    		try {
	    			connection.close();
				} catch (Exception e2) {
					e2.printStackTrace(); 
				}
	    	}
        	
		}
        return null;
    }

    /**
     * 可处理insert/delete/update语句
     * @param sql sql语句
     * @param parms 占位符参数数组
     * @return 返回bool值,表示是否成功
     */
    public static int addOrInsertOrUpdate(String sql, String[] parms){
    	PreparedStatement preparedStatement=null;
    	 Connection connection =null;
        try {
            //获取连接
            connection = getConnection();
            preparedStatement = connection.prepareStatement(sql);
            //对占位符进行赋值
            if (parms != null && parms.length > 0) {
                for (int i = 0; i < parms.length; i++) {
                    if("null".equals(parms[i])){
                        preparedStatement.setNull(i + 1, Types.NULL);
                    }else {
                        preparedStatement.setString(i + 1, parms[i]);
                    }
                }
            }
            //提交sql
            int count =preparedStatement.executeUpdate();
            return count;
        } catch (Exception e){
            System.err.println("表更新失败!");
            e.printStackTrace();
        } finally {
        	if(preparedStatement!=null) {
	    		try {
	    			preparedStatement.close();
				} catch (Exception e2) {
					e2.printStackTrace(); 
				}
	    	}
	    	if(connection!=null) {
	    		try {
	    			connection.close();
				} catch (Exception e2) {
					e2.printStackTrace(); 
				}
	    	}
        }
        return -1;
    }

   
    
	}


3.测试结果
在这里插入图片描述
4.测试代码:ip查询.java

import java.util.List;


public class ip查询 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		try{
            
        	long iplong = ipToLong("1.50.101.228");
        	String sql = "SELECT country,province,city FROM ipinfo where ipstart<=? and ipend>=?";
			  
			  System.out.println(sql);
			  // 查找数据返回结果集
			  String[] param = new String[2];
			  param[0]=iplong+"";
			  param[1]=iplong+"";
			  
			  List<Object[]> objectList = JdbcUtilPool.select(sql,param);
			  //对返回的结果进行遍历
			  for (Object[] objects : objectList) {
	        	
		    	System.out.println(objects[0]+"");
		    	System.out.println(objects[1]+"");
		    	System.out.println(objects[2]+"");
			  }  	        
        
       
    }catch (Exception e) {
        e.printStackTrace();
    }

	}
	public static long ipToLong(String ip) {
		long ret = 0L;
		try {
			if(!ip.isEmpty()&&ip.contains(".")) {
				String[] s = ip.split("\\.");
				if(s.length==4) {
					
					ret = Long.parseLong(s[0])*256*256*256+Long.parseLong(s[1])*256*256+Long.parseLong(s[2])*256+Long.parseLong(s[3]);
					return ret;
				}
			}
		} catch (Exception e) {
		}
		return ret;
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

奔走的小龙虾

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

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

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

打赏作者

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

抵扣说明:

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

余额充值