Propretites+druid+c3p0+Junit操作c3p0,druid连接池的代码

---->>Propretites+druid+c3p0+Junit操作c3p0,druid连接池的代码<<------(_)

javaJdbc分为四个阶段
一:原始的jdbc,连接关闭数据库一个类,增删改查和事件写在一起。
二 :Dao阶段entity(对应数据库的实体类)(dao专门写针对数据库专门用的表)的类。Dao包下Dao类,entity包下user类(对应数据库的user表,user表中有id,name,pass。那么user类中就private 对应表中的数据类型比如说,数据库中user表id字段是int类型,那么java中user类就private Integer(包装器类型,不包装就是int,建议包装)int;完整的一行代码是private Integer int;私有化属性,公开getset方法,有参无参属性构造,实现Serializable 生成唯一序列号)。
在这个阶段开始有了实体包entity,专写增删改查方法dao包(很多代码都是一样的,所以用spring。主要精力放在业务逻辑,比如包裹从A地到B地其中的临时站点存放,物流仓库分拣等等),连接关闭数据库DBUtils包。
三:实现第二个阶段后,因为DBUtils包下的DBConn类(专用连关数据库)中的私有化属性被写固定值,肯定是不方便****的。比如说这样—>>
在这里插入图片描述那么为了方便就应该从propertites文件中获得建立db.propertites在这里插入图片描述放在src目录下,其中写数据库四要素
因为proppertites是采用键值的形式,在DBConn类中得到四要素就可以从propertites中获得了。这样就方便了,可以使用mysql数据库,oracle数据库,而不用改变源代码,只需改变pro…文件中的值即可。
四:就应该使用数据库连接池技术了c3p0,druid(阿里),hk(日本最新最快)。用main方法测试有暴露的风险。所以新建一个JUnit case test 。和Test类中写一个main方法。
在这里插入图片描述在新建的JUnit case test类中方法上标有@Test的方法就是转到Test类中的main方法进行调用。
五:因为增删改查都一样,所以有了框架,Spring框架。使得程序员能把主要精力放在业务逻辑上而不是重复的代码上。

贴代码:基本上按操作复制粘贴即可。操作c3p0,druid连接池的代码
结构:
在这里插入图片描述
注释的代码是有可能恢复的代码。
dao包下UserDao(大驼峰式命名)类:

/**
 * 
 */
package dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Date;

import javax.swing.plaf.basic.BasicInternalFrameTitlePane.RestoreAction;

import DBUtils.DBConnJDBC;
import DBUtils.DBConnProC3p0;
import DBUtils.DBConnProDruid;
import DBUtils.DBConnProJD;

/**
 * @author sq
 * @date 2020年7月4日
 * @Desription: TODO
 */
public class UserDao {
           private static Connection conn;
           private static PreparedStatement ps;
           private static ResultSet rs;

           public static void addUserJD(){ // 原始jdbc
        	   String sql="insert into tb_user(username,password)values('1211100','2')";
        	   
        	   conn=DBConnJDBC.getConnection();
        	   try {
				ps=conn.prepareStatement(sql);
				ps.executeUpdate();
				System.out.println("添加成功");

			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				System.out.println("添加失败");

			}finally{
				DBConnJDBC.close(conn, ps);
			}
        	   
           }
           
           
           public static void addUserPro(){  // jdbcpro
        	   String sql="insert into tb_user(username,password)values('10211','2')";
        	   
        	   conn=DBConnProJD.getConnection();
        	   try {
				ps=conn.prepareStatement(sql);
				ps.executeUpdate();
				System.out.println("添加成功");

			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				System.out.println("添加失败");

			}finally{
				DBConnProJD.close(conn, ps);
			}
        	   
           }
           
           public static void addUserC3p0(){  // jdbc c3p0
        	   String sql="insert into tb_user(username,password)values('12110001','2')";
        	   
        	   conn=DBConnProC3p0.getConnection();
        	   try {
				ps=conn.prepareStatement(sql);
				ps.executeUpdate();
				System.out.println("添加成功");
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				System.out.println("添加失败");

			}finally{
				DBConnProC3p0.close(conn, ps);
			}
        	   
           }
           
           public static void addUserDruid(){  // jdbc druid
        	   String sql="insert into tb_user(username,password)values('12100101001','2')";
        	   
        	   conn=DBConnProDruid.getConnection();
        	   try {
				ps=conn.prepareStatement(sql);
				ps.executeUpdate();
				System.out.println("添加成功");
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				System.out.println("添加失败");

			}finally{
				DBConnProDruid.close(conn, ps);
			}
        	   
           }
           
}

DBUtils包下DBConnJDBC类:

/**
 * 
 */
package DBUtils;

import java.io.IOException;
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.util.Properties;

/**
 * @author sq
 * @date 2020年7月4日
 * @Desription: TODO
 */
public class DBConnJDBC {
	
	// 四要素
         private static final String DRIVER="com.mysql.jdbc.Driver";   // 驱动
         private static final String URL="jdbc:mysql://localhost:3306/girls";     // 地址
         private static final  String USER="root";    // 数据库用户名
         private static final String PASSWORD="123456";// 数据库密码

   
    // 加载     
         static{
          
					try {
						Class.forName(DRIVER);
					} catch (ClassNotFoundException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}  // 加载驱动
				
           	 
         }
      // 打开连接  
         public static Connection getConnection(){  
        	 Connection conn=null;
        	 try {
				conn=DriverManager.getConnection(URL,USER,PASSWORD);
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			return conn;
        	 
         }
      // 关闭连接
         public static  void close(Connection conn,PreparedStatement ps,ResultSet rs){  
				try {
					if (conn!=null) {
						conn.close();
					}
					if (ps!=null) {
						ps.close();
					}if (rs!=null) {
					rs.close();
					}
					System.out.println("关闭成功");
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
         }
         public static  void close(Connection conn,PreparedStatement ps){
     				close(conn,ps);
              }
         public static  void close(Connection conn){
				close(conn,null,null);
       }
  
}

DBUtils包下DBConnProC3p0类:

/**
 * 
 */
package DBUtils;

import java.beans.PropertyVetoException;
import java.io.IOException;
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.util.Properties;

import com.mchange.v2.c3p0.ComboPooledDataSource;

/**
 * @author sq
 * @date 2020年7月4日
 * @Desription: TODO
 */
public class DBConnProC3p0 {
       
	              private static  ComboPooledDataSource dataSource=new ComboPooledDataSource();  // 创建连接池
	 
   
         
         static{
           	 InputStream is=DBConnProJD.class.getResourceAsStream("/db.Properties"); // 加载db.propertites文件
           	 System.out.println("找到文件");
           	 Properties prop=new Properties();
           	 try {
				prop.load(is);
			dataSource.setDriverClass(prop.getProperty("c3p0.driver"));// c3p0连接池得到驱动已加载驱动   // 将tb.pr... 文件中的driver键所对应的值赋值给本页面定义的变量dataSource
		
		dataSource.setJdbcUrl(prop.getProperty("c3p.url"));  // 可以自定义properties中的c3p0键名
		dataSource.setUser(prop.getProperty("c3p0.user"));
		dataSource.setPassword(prop.getProperty("c3p0.password"));
		 System.out.println("加载成功");
//System.out.println(dataSource.getPassword());
				
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}  catch (PropertyVetoException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} 	
           	 
         }
         
         public static Connection getConnection(){  // 打开连接
        	 Connection conn=null;
        	 try {
				conn=dataSource.getConnection();   // 连接池中加载了url,name,pass
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			return conn;
        	 
         }
         public static  void close(Connection conn,PreparedStatement ps,ResultSet rs){  // 关闭连接
				try {
					if (conn!=null) {
						conn.close();
					}
					if (ps!=null) {
						ps.close();
					}if (rs!=null) {
					rs.close();
					}
					System.out.println("关闭成功");
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
         }
         public static  void close(Connection conn,PreparedStatement ps){
     				close(conn,ps);
              }
         public static  void close(Connection conn){
				close(conn,null,null);
       }
  
}

DBUtils包下DBConnProDruid类:

/**
 * 
 */
package DBUtils;

import java.beans.PropertyVetoException;
import java.io.IOException;
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.util.Properties;

import javax.sql.DataSource;

import com.alibaba.druid.pool.DruidDataSourceFactory;
import com.mchange.v2.c3p0.ComboPooledDataSource;

/**
 * @author sq
 * @date 2020年7月4日
 * @Desription: TODO
 */
public class DBConnProDruid {
       
	              private static DataSource dataSource;  // 创建连接池
	 
   
         
         static{
           	 InputStream is=DBConnProJD.class.getResourceAsStream("/db.Properties"); // 加载db.propertites文件
           	 System.out.println("找到文件");
           	 Properties prop=new Properties();
           	 try {
				prop.load(is);
				dataSource=DruidDataSourceFactory.createDataSource(prop);
		
		 System.out.println("加载成功");
//System.out.println(dataSource.getPassword());
				
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}  catch (PropertyVetoException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} 		 catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
           	 
         }
         
         public static Connection getConnection(){  // 打开连接
        	 Connection conn=null;
        	 try {
				conn=dataSource.getConnection();   // 连接池中加载了url,name,pass
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			return conn;
        	 
         }
         public static  void close(Connection conn,PreparedStatement ps,ResultSet rs){  // 关闭连接
				try {
					if (conn!=null) {
						conn.close();
					}
					if (ps!=null) {
						ps.close();
					}if (rs!=null) {
					rs.close();
					}
					System.out.println("关闭成功");
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
         }
         public static  void close(Connection conn,PreparedStatement ps){
     				close(conn,ps);
              }
         public static  void close(Connection conn){
				close(conn,null,null);
       }
  
}

DBUtils包下DBUtils包下DBConnProDruid类:

/**
 * 
 */
package DBUtils;

import java.io.IOException;
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.util.Properties;

/**
 * @author sq
 * @date 2020年7月4日
 * @Desription: TODO
 */
public class DBConnProJD {
         private static String dirve;   // 驱动
         private static String url;     // 地址
         private static String user;    // 数据库用户名
         private static String password;// 数据库密码

   
         
         static{
           	 InputStream is=DBConnProJD.class.getResourceAsStream("/db.Properties"); // 加载db.propertites文件
           	 System.out.println("找到文件");
           	 Properties prop=new Properties();
           	 try {
				prop.load(is);
				dirve=prop.getProperty("jdbc.driver");  // 将tb.pr... 文件中的driver键所对应的值赋值给本页面定义的变量dirver
				url=prop.getProperty("jdbc.url");
				user=prop.getProperty("jdbc.user");
				password=prop.getProperty("jdbc.password");
				System.out.println("加载成功");

					Class.forName(dirve);  // 加载驱动
				
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (ClassNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
           	 
         }
         
         public static Connection getConnection(){  // 打开连接
        	 Connection conn=null;
        	 try {
				conn=DriverManager.getConnection(url,user,password);
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			return conn;
        	 
         }
         public static  void close(Connection conn,PreparedStatement ps,ResultSet rs){  // 关闭连接
				try {
					if (conn!=null) {
						conn.close();
					}
					if (ps!=null) {
						ps.close();
					}if (rs!=null) {
					rs.close();
					}
					System.out.println("关闭成功");
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
         }
         public static  void close(Connection conn,PreparedStatement ps){
     				close(conn,ps);
              }
         public static  void close(Connection conn){
				close(conn,null,null);
       }
  
}

entity包下User类(对应数据库表中的类):

/**
 * 
 */
package entity;

import java.io.Serializable;
import java.util.Date;

/**
 * @author sq
 * @date 2020年7月4日
 * @Desription: TODO
 */
public class User implements Serializable {
	   /**
	 * 
	 */
	private static final long serialVersionUID = 2280691281494912509L;  // 实现ser...接口生成一个序列化
	private Integer	uid;   // 使用者id号
	   private String	userName;// 用户名
	  private String 	password; // 密码
	  private Integer	status;   // 用户状态
	    private   Date	regtime; // 日期
	  private double	money;  // 金钱





	  /**
	 * 
	 */
	public User() {
		super();
		// TODO Auto-generated constructor stub
	}
	/**
	 * @param userName
	 * @param password
	 * @param status
	 * @param regtime
	 * @param money
	 */
	public User(String userName, String password, Integer status, Date regtime, double money) {
		super();
		this.userName = userName;
		this.password = password;
		this.status = status;
		this.regtime = regtime;
		this.money = money;
	}
	/**
	 * @param uid
	 * @param userName
	 * @param password
	 * @param status
	 * @param regtime
	 * @param money
	 */
	public User(Integer uid, String userName, String password, Integer status, Date regtime, double money) {
		super();
		this.uid = uid;
		this.userName = userName;
		this.password = password;
		this.status = status;
		this.regtime = regtime;
		this.money = money;
	}
	public Integer getUid() {
	  	return uid;
	  }
	  /**
	   * @param uid uid 
	   */
	  public void setUid(Integer uid) {
	  	this.uid = uid;
	  }
	  /**
	   * @return userName
	   */
	  public String getUserName() {
	  	return userName;
	  }
	  /**
	   * @param userName userName 
	   */
	  public void setUserName(String userName) {
	  	this.userName = userName;
	  }
	  /**
	   * @return password
	   */
	  public String getPassword() {
	  	return password;
	  }
	  /**
	   * @param password password 
	   */
	  public void setPassword(String password) {
	  	this.password = password;
	  }
	  /**
	   * @return status
	   */
	  public Integer getStatus() {
	  	return status;
	  }
	  /**
	   * @param status status 
	   */
	  public void setStatus(Integer status) {
	  	this.status = status;
	  }
	  /**
	   * @return regtime
	   */
	  public Date getRegtime() {
	  	return regtime;
	  }
	  /**
	   * @param regtime regtime 
	   */
	  public void setRegtime(Date regtime) {
	  	this.regtime = regtime;
	  }
	  /**
	   * @return money
	   */
	  public double getMoney() {
	  	return money;
	  }
	  /**
	   * @param money money 
	   */
	  public void setMoney(double money) {
	  	this.money = money;
	  }
	  /* (non-Javadoc)
	   * @see java.lang.Object#toString()
	   */
	  @Override
	  public String toString() {
	  	return "UserDao [uid=" + uid + ", userName=" + userName + ", password=" + password + ", status=" + status
	  			+ ", regtime=" + regtime + ", money=" + money + "]";
	  }

}

Test包下建Jt.Junit Test Case
在这里插入图片描述

/**
 * 
 */
package Test;

import static org.junit.Assert.*;

import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;

import dao.UserDao;

/**
 * @author sq
 * @date 2020年7月4日
 * @Desription: TODO
 */
public class Jt {

	/**
	 * @author sq
	 * @param @throws java.lang.Exception
	 * @return void
	 * @time 2020年7月4日 下午7:47:15
	 * @Desription: TODO
	 * @throws java.lang.Exception
	 */
	@BeforeClass
	public static void setUpBeforeClass() throws Exception {
	}

	/**
	 * @author sq
	 * @param @throws java.lang.Exception
	 * @return void
	 * @time 2020年7月4日 下午7:47:15
	 * @Desription: TODO
	 * @throws java.lang.Exception
	 */
	@AfterClass
	public static void tearDownAfterClass() throws Exception {
	}

	@Test// c3p0连接池
	public void testC3p0() {
		UserDao.addUserC3p0();
	}
	@Test// jdbc原始连接
	public void testJD(){
		UserDao.addUserJD();
	}
	@Test // Projdbc
	public void testProJD(){
		UserDao.addUserPro();
	}
	@Test // Prodruid
	public void testProDruid(){
		UserDao.addUserDruid();
	}

}

因为是从上往下运行所以,想要运行某一个方法时:在这里插入图片描述
在目录结构下选中某一个方法运行。

Test包下建一个Test类

/**
 * 
 */
package Test;

/**
 * @author sq
 * @date 2020年7月4日
 * @Desription: TODO
 */
public class Test {
public static void main(String[] args) {
	
}
}

src目录下的db.propertites文件中

mysql\u6570\u636E\u5E93 -->jdbc\u8FDE\u63A5\u65B9\u5F0F   原始jdbc
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/girls
jdbc.user=root
jdbc.password=123456


mysql\u6570\u636E\u5E93 -->C3p0\u8FDE\u63A5\u65B9\u5F0F   c3p0连接池
c3p0.driver=com.mysql.jdbc.Driver
c3p.url=jdbc:mysql://localhost:3306/girls
c3p0.user=root
c3p0.password=123456
c3p0.initPoolSize = 10
c3p0.maxPoolSize = 20
c3p0.minPoolSize = 5
c3p0.maxStatements = 30
c3p0.maxIdleTime = 300


mysql\u6570\u636E\u5E93 -->druid\u8FDE\u63A5\u65B9\u5F0F   druid连接池
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/girls
username=root
password=123456
pool.init=1
pool.minIdle=3
pool.maxActive=20

需要包:
在这里插入图片描述

资源地址:各位大佬如果对您有帮助请给个赞加好评,谢谢。入军github。
链接: https://pan.baidu.com/s/1B-zgMfVCP3xEpz_o0Tm9Zg 提取码: q9ck

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值