2、.getcom.mchange.v2.c3p0.impl.NewProxyConnection cannot becast to com.mysql.jdbc.Connection

标准的demo:

2、JdbcUtils

JdbcUtils用来获取Connection对象,以及开启和关闭事务。

l Connection getConnection():从c3p0连接池获取Connection对象,所以需要提供c3p0-config.xml配置文件;

l beginTransaction():为当前线程开启事务;

l commitTransaction():提交当前线程的事务;

l rollbackTransaction():回滚当前线程的事务;

l releaseConnection(Connection):如果参数连接对象不是当前事务的连接对象,那么关闭它,否则什么都不做;


c3p0-config.xml

xml version="1.0" encoding="UTF-8" ?>

<c3p0-config>

<default-config> 

<property name="jdbcUrl">jdbc:mysql://localhost:3306/mydb1property>

<property name="driverClass">com.mysql.jdbc.Driverproperty>

<property name="user">rootproperty>

<property name="password">123property>

<property name="acquireIncrement">3property>

<property name="initialPoolSize">10property>

<property name="minPoolSize">2property>

<property name="maxPoolSize">10property>

default-config>

c3p0-config>

 

JdbcUtilsTest.java

/**

 * 测试JdbcUtils

 * @author qdmmy6

 *

 */

public class JdbcUtilsTest {

/**

 * 通过C3P0连接池获取连接对象

 * @throws SQLException

 */

@Test

public void testGetConnection() throws SQLException {

Connection con = JdbcUtils.getConnection();//获取连接

System.out.println(con);

JdbcUtils.releaseConnection(con);//如果参数con不是当前线程的连接对象,那么关闭之

}

/**

 * 当开始事务后,调用getConnection()会为当前线程创建Connection,而且多次调用getConnection()返回的是同一个对象

 * @throws SQLException

 */

@Test

public void testTansaction() throws SQLException {

JdbcUtils.beginTransaction();//开启事务

Connection c1 = JdbcUtils.getConnection();//第一次获取当前线程的事务连接对象

Connection c2 = JdbcUtils.getConnection();//第二次获取当前线程的事务连接对象

Assert.assertEquals(true, c1 == c2);//比较两次是否相同

JdbcUtils.commitTransaction();//提交事务

}

}


package cn.gaozhen.test;



import static org.junit.Assert.*;


import java.sql.Connection;    如果写成这个 
com.mysql.jdbc.Connection将会com.mchange.v2.c3p0.impl.NewProxyConnection cannot be cast to com.mysql.jdbc.Connection
import java.sql.SQLException;


import org.junit.Test;


import cn.itcast.jdbc.JdbcUtils;






public class JdbcUtilsTest {


/*
* JdbcUtils用来获取connection
* 底层用了c3p0连接池
* 需要的jar:c3p0-0.9.2-pre1.jar,mchange-commons-0.2.jar
 
* 还需要mysql驱动
* mysql-connector-java-5.1.13-bin.jar


* 因为底层用了c3p0连接池,说明我们还需要c3p0配置文件,
* 放到src下
* /Test/src/c3p0-config.xml
*/
@Test
public void testGetConnection()  {
Connection conn;
try {
conn = JdbcUtils.getConnection();
System.out.println(conn);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
@Test
public void testTransaction()
{
try {
JdbcUtils.beginTransaction();//开启事务
//多次操作
JdbcUtils.commitTransaction();//提交事务

} catch (Exception e) {
// TODO: handle exception
}
}


}

你可能感兴趣的:(网上书城JavaWeb项目学习)